{
  "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause",
          "shortDescription" : "Started by upstream project \"orin-module-ros2\" build number 123",
          "upstreamBuild" : 123,
          "upstreamProject" : "orin-module-ros2",
          "upstreamUrl" : "job/orin-module-ros2/"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "msgBranch",
          "value" : "dev_ros2"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "pncBranch",
          "value" : "feat_ros2_platoon"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "hdmapBranch",
          "value" : "no"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "hdmapInterfaceBranch",
          "value" : "ros2"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "notes",
          "value" : "pncreplayer更新"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "info",
          "value" : "orin-module-ros2: #123"
        }
      ]
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.libs.LibrariesAction"
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2177,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
            "branch" : [
              {
                "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
                "name" : "master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
            "branch" : [
              {
                "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
                "name" : "master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
        "branch" : [
          {
            "SHA1" : "6ec4c73f16769d31c660c5020d0f9d715ab0b1b7",
            "name" : "master"
          }
        ]
      },
      "remoteUrls" : [
        "http://159.27.226.4/weilikang/jenkinslib.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.cps.EnvActionImpl"
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2177,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
            "branch" : [
              {
                "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
            "branch" : [
              {
                "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
        "branch" : [
          {
            "SHA1" : "da346d05dedce5efb0c0437192f29599ceeab71b",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "http://159.27.226.4/weilikang/jenkinsfiles.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.cps.view.InterpolatedSecretsAction"
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/rc_dev_d0713c" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 514,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d0713c65fd86b2ac53ed036ec66b90521c2ef97c",
            "branch" : [
              {
                "SHA1" : "d0713c65fd86b2ac53ed036ec66b90521c2ef97c",
                "name" : "origin/rc_dev_d0713c"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d0713c65fd86b2ac53ed036ec66b90521c2ef97c",
            "branch" : [
              {
                "SHA1" : "d0713c65fd86b2ac53ed036ec66b90521c2ef97c",
                "name" : "origin/rc_dev_d0713c"
              }
            ]
          }
        },
        "origin/rc_dev_xinjiang_kaiwo" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1244,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_xinjiang_kaiwo"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_xinjiang_kaiwo"
              }
            ]
          }
        },
        "origin/feat_multiple_path" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 104,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d54cf8742b0d6a6d1d6ad06beb448f37152ca1d8",
            "branch" : [
              {
                "SHA1" : "d54cf8742b0d6a6d1d6ad06beb448f37152ca1d8",
                "name" : "origin/feat_multiple_path"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d54cf8742b0d6a6d1d6ad06beb448f37152ca1d8",
            "branch" : [
              {
                "SHA1" : "d54cf8742b0d6a6d1d6ad06beb448f37152ca1d8",
                "name" : "origin/feat_multiple_path"
              }
            ]
          }
        },
        "origin/feat-peripheral_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 405,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "47370a9f329d90e5e5d59e53f6173a21ad880678",
            "branch" : [
              {
                "SHA1" : "47370a9f329d90e5e5d59e53f6173a21ad880678",
                "name" : "origin/feat-peripheral_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "47370a9f329d90e5e5d59e53f6173a21ad880678",
            "branch" : [
              {
                "SHA1" : "47370a9f329d90e5e5d59e53f6173a21ad880678",
                "name" : "origin/feat-peripheral_qiangang"
              }
            ]
          }
        },
        "origin/feat_tc_v2_weihai" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1910,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "db51c891fddcf73babce98115f7526d2860bd6c4",
            "branch" : [
              {
                "SHA1" : "db51c891fddcf73babce98115f7526d2860bd6c4",
                "name" : "origin/feat_tc_v2_weihai"
              }
            ]
          },
          "revision" : {
            "SHA1" : "db51c891fddcf73babce98115f7526d2860bd6c4",
            "branch" : [
              {
                "SHA1" : "db51c891fddcf73babce98115f7526d2860bd6c4",
                "name" : "origin/feat_tc_v2_weihai"
              }
            ]
          }
        },
        "origin/youyiguan_add_trailer_info" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1294,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "062de51109603913f092d421e259df68b3b57f8f",
            "branch" : [
              {
                "SHA1" : "062de51109603913f092d421e259df68b3b57f8f",
                "name" : "origin/youyiguan_add_trailer_info"
              }
            ]
          },
          "revision" : {
            "SHA1" : "062de51109603913f092d421e259df68b3b57f8f",
            "branch" : [
              {
                "SHA1" : "062de51109603913f092d421e259df68b3b57f8f",
                "name" : "origin/youyiguan_add_trailer_info"
              }
            ]
          }
        },
        "origin/rcdev_0a13c34" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 231,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0a13c3462eee863b32a43ea2e82612f649af702a",
            "branch" : [
              {
                "SHA1" : "0a13c3462eee863b32a43ea2e82612f649af702a",
                "name" : "origin/rcdev_0a13c34"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0a13c3462eee863b32a43ea2e82612f649af702a",
            "branch" : [
              {
                "SHA1" : "0a13c3462eee863b32a43ea2e82612f649af702a",
                "name" : "origin/rcdev_0a13c34"
              }
            ]
          }
        },
        "origin/rc_dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2006,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7d594c755e96741c20d32b84dec169d35b599e9c",
            "branch" : [
              {
                "SHA1" : "7d594c755e96741c20d32b84dec169d35b599e9c",
                "name" : "origin/rc_dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7d594c755e96741c20d32b84dec169d35b599e9c",
            "branch" : [
              {
                "SHA1" : "7d594c755e96741c20d32b84dec169d35b599e9c",
                "name" : "origin/rc_dev"
              }
            ]
          }
        },
        "origin/feat_v2x" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 97,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "818081a723d83abf39efe236cb6ab488aef53bba",
            "branch" : [
              {
                "SHA1" : "818081a723d83abf39efe236cb6ab488aef53bba",
                "name" : "origin/feat_v2x"
              }
            ]
          },
          "revision" : {
            "SHA1" : "818081a723d83abf39efe236cb6ab488aef53bba",
            "branch" : [
              {
                "SHA1" : "818081a723d83abf39efe236cb6ab488aef53bba",
                "name" : "origin/feat_v2x"
              }
            ]
          }
        },
        "origin/rc_dev_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1897,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1f1b50411fbad43ef0d16e173acf889b3a413854",
            "branch" : [
              {
                "SHA1" : "1f1b50411fbad43ef0d16e173acf889b3a413854",
                "name" : "origin/rc_dev_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1f1b50411fbad43ef0d16e173acf889b3a413854",
            "branch" : [
              {
                "SHA1" : "1f1b50411fbad43ef0d16e173acf889b3a413854",
                "name" : "origin/rc_dev_qiangang"
              }
            ]
          }
        },
        "origin/feat_xiamen_patch" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1606,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5edde714fd5009dce8a08067bfa73d09adf298d6",
            "branch" : [
              {
                "SHA1" : "5edde714fd5009dce8a08067bfa73d09adf298d6",
                "name" : "origin/feat_xiamen_patch"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5edde714fd5009dce8a08067bfa73d09adf298d6",
            "branch" : [
              {
                "SHA1" : "5edde714fd5009dce8a08067bfa73d09adf298d6",
                "name" : "origin/feat_xiamen_patch"
              }
            ]
          }
        },
        "origin/rc_dev_taiyang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1547,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7b898979876c3089d42c8ecbfbeef3da821c694b",
            "branch" : [
              {
                "SHA1" : "7b898979876c3089d42c8ecbfbeef3da821c694b",
                "name" : "origin/rc_dev_taiyang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7b898979876c3089d42c8ecbfbeef3da821c694b",
            "branch" : [
              {
                "SHA1" : "7b898979876c3089d42c8ecbfbeef3da821c694b",
                "name" : "origin/rc_dev_taiyang"
              }
            ]
          }
        },
        "origin/feat-peripheral_op_state" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 239,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f0a5167416f0fec86262fc7b9f86b98b8c9f1580",
            "branch" : [
              {
                "SHA1" : "f0a5167416f0fec86262fc7b9f86b98b8c9f1580",
                "name" : "origin/feat-peripheral_op_state"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f0a5167416f0fec86262fc7b9f86b98b8c9f1580",
            "branch" : [
              {
                "SHA1" : "f0a5167416f0fec86262fc7b9f86b98b8c9f1580",
                "name" : "origin/feat-peripheral_op_state"
              }
            ]
          }
        },
        "origin/feat_mandula_udp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 830,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d261c50491fbc8a11349b8ab65a8076d75ebdc08",
            "branch" : [
              {
                "SHA1" : "d261c50491fbc8a11349b8ab65a8076d75ebdc08",
                "name" : "origin/feat_mandula_udp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d261c50491fbc8a11349b8ab65a8076d75ebdc08",
            "branch" : [
              {
                "SHA1" : "d261c50491fbc8a11349b8ab65a8076d75ebdc08",
                "name" : "origin/feat_mandula_udp"
              }
            ]
          }
        },
        "origin/feat-peripheral_op_state-chassis_err" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 377,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3fed282b426dddc8539eed2eac1b7bc368431e71",
            "branch" : [
              {
                "SHA1" : "3fed282b426dddc8539eed2eac1b7bc368431e71",
                "name" : "origin/feat-peripheral_op_state-chassis_err"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3fed282b426dddc8539eed2eac1b7bc368431e71",
            "branch" : [
              {
                "SHA1" : "3fed282b426dddc8539eed2eac1b7bc368431e71",
                "name" : "origin/feat-peripheral_op_state-chassis_err"
              }
            ]
          }
        },
        "origin/rc_dev_shanqihuanwei" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1589,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f5a740650e27555efc2c844e135111515679ba9d",
            "branch" : [
              {
                "SHA1" : "f5a740650e27555efc2c844e135111515679ba9d",
                "name" : "origin/rc_dev_shanqihuanwei"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f5a740650e27555efc2c844e135111515679ba9d",
            "branch" : [
              {
                "SHA1" : "f5a740650e27555efc2c844e135111515679ba9d",
                "name" : "origin/rc_dev_shanqihuanwei"
              }
            ]
          }
        },
        "origin/feat_tc_v2_yantai" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1862,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bdb5ae48b5cbb4cf8ba76eba652e4f20aeff253d",
            "branch" : [
              {
                "SHA1" : "bdb5ae48b5cbb4cf8ba76eba652e4f20aeff253d",
                "name" : "origin/feat_tc_v2_yantai"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bdb5ae48b5cbb4cf8ba76eba652e4f20aeff253d",
            "branch" : [
              {
                "SHA1" : "bdb5ae48b5cbb4cf8ba76eba652e4f20aeff253d",
                "name" : "origin/feat_tc_v2_yantai"
              }
            ]
          }
        },
        "origin/rc_dev_e53243" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 651,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e53243a23acd89640afd41301882167071c14022",
            "branch" : [
              {
                "SHA1" : "e53243a23acd89640afd41301882167071c14022",
                "name" : "origin/rc_dev_e53243"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e53243a23acd89640afd41301882167071c14022",
            "branch" : [
              {
                "SHA1" : "e53243a23acd89640afd41301882167071c14022",
                "name" : "origin/rc_dev_e53243"
              }
            ]
          }
        },
        "origin/rc_dev_zhoushan" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1472,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "96ed1f1aae62978d865c3acf62e16756e9530773",
            "branch" : [
              {
                "SHA1" : "96ed1f1aae62978d865c3acf62e16756e9530773",
                "name" : "origin/rc_dev_zhoushan"
              }
            ]
          },
          "revision" : {
            "SHA1" : "96ed1f1aae62978d865c3acf62e16756e9530773",
            "branch" : [
              {
                "SHA1" : "96ed1f1aae62978d865c3acf62e16756e9530773",
                "name" : "origin/rc_dev_zhoushan"
              }
            ]
          }
        },
        "origin/feat_tc_v2_daxie" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1815,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "aed54f80025d95dc2fa58fadb5f26bd1c46d4b0d",
            "branch" : [
              {
                "SHA1" : "aed54f80025d95dc2fa58fadb5f26bd1c46d4b0d",
                "name" : "origin/feat_tc_v2_daxie"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aed54f80025d95dc2fa58fadb5f26bd1c46d4b0d",
            "branch" : [
              {
                "SHA1" : "aed54f80025d95dc2fa58fadb5f26bd1c46d4b0d",
                "name" : "origin/feat_tc_v2_daxie"
              }
            ]
          }
        },
        "origin/rc_dev_dongfen" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1702,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_dongfen"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_dongfen"
              }
            ]
          }
        },
        "origin/feat_daxie_patch" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1246,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
            "branch" : [
              {
                "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
                "name" : "origin/feat_daxie_patch"
              }
            ]
          },
          "revision" : {
            "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
            "branch" : [
              {
                "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
                "name" : "origin/feat_daxie_patch"
              }
            ]
          }
        },
        "origin/feat_speed_lmt" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 433,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "510f3a0d45ae6290a9448ecf012dfe501b504a15",
            "branch" : [
              {
                "SHA1" : "510f3a0d45ae6290a9448ecf012dfe501b504a15",
                "name" : "origin/feat_speed_lmt"
              }
            ]
          },
          "revision" : {
            "SHA1" : "510f3a0d45ae6290a9448ecf012dfe501b504a15",
            "branch" : [
              {
                "SHA1" : "510f3a0d45ae6290a9448ecf012dfe501b504a15",
                "name" : "origin/feat_speed_lmt"
              }
            ]
          }
        },
        "origin/feat_tc_v2_yangpu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1804,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "549daf0fc4e7c8f469ba1807acf334525ddb939b",
            "branch" : [
              {
                "SHA1" : "549daf0fc4e7c8f469ba1807acf334525ddb939b",
                "name" : "origin/feat_tc_v2_yangpu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "549daf0fc4e7c8f469ba1807acf334525ddb939b",
            "branch" : [
              {
                "SHA1" : "549daf0fc4e7c8f469ba1807acf334525ddb939b",
                "name" : "origin/feat_tc_v2_yangpu"
              }
            ]
          }
        },
        "origin/rc_dev_xiasha" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2076,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fca3a20dd978a00f0568bbb02a49aff6fc1ffeb1",
            "branch" : [
              {
                "SHA1" : "fca3a20dd978a00f0568bbb02a49aff6fc1ffeb1",
                "name" : "origin/rc_dev_xiasha"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fca3a20dd978a00f0568bbb02a49aff6fc1ffeb1",
            "branch" : [
              {
                "SHA1" : "fca3a20dd978a00f0568bbb02a49aff6fc1ffeb1",
                "name" : "origin/rc_dev_xiasha"
              }
            ]
          }
        },
        "origin/feat_yard_lane_change" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 525,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "9c5267888fbed74808f7b7c3fa5beff157057207",
            "branch" : [
              {
                "SHA1" : "9c5267888fbed74808f7b7c3fa5beff157057207",
                "name" : "origin/feat_yard_lane_change"
              }
            ]
          },
          "revision" : {
            "SHA1" : "9c5267888fbed74808f7b7c3fa5beff157057207",
            "branch" : [
              {
                "SHA1" : "9c5267888fbed74808f7b7c3fa5beff157057207",
                "name" : "origin/feat_yard_lane_change"
              }
            ]
          }
        },
        "origin/feat_tc_v2_xiamen" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2176,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "df329f0b0fe1fb2f0213fc2c6e790f48c58253e5",
            "branch" : [
              {
                "SHA1" : "df329f0b0fe1fb2f0213fc2c6e790f48c58253e5",
                "name" : "origin/feat_tc_v2_xiamen"
              }
            ]
          },
          "revision" : {
            "SHA1" : "df329f0b0fe1fb2f0213fc2c6e790f48c58253e5",
            "branch" : [
              {
                "SHA1" : "df329f0b0fe1fb2f0213fc2c6e790f48c58253e5",
                "name" : "origin/feat_tc_v2_xiamen"
              }
            ]
          }
        },
        "origin/rcdev_c9969b7" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 289,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "24a5a27ac09f5c6d866b65ecdc9fee463be597cf",
            "branch" : [
              {
                "SHA1" : "24a5a27ac09f5c6d866b65ecdc9fee463be597cf",
                "name" : "origin/rcdev_c9969b7"
              }
            ]
          },
          "revision" : {
            "SHA1" : "24a5a27ac09f5c6d866b65ecdc9fee463be597cf",
            "branch" : [
              {
                "SHA1" : "24a5a27ac09f5c6d866b65ecdc9fee463be597cf",
                "name" : "origin/rcdev_c9969b7"
              }
            ]
          }
        },
        "origin/rc_dev_suxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2172,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "19e0f13735cd065dc0507a9516ad10727decfb29",
            "branch" : [
              {
                "SHA1" : "19e0f13735cd065dc0507a9516ad10727decfb29",
                "name" : "origin/rc_dev_suxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "19e0f13735cd065dc0507a9516ad10727decfb29",
            "branch" : [
              {
                "SHA1" : "19e0f13735cd065dc0507a9516ad10727decfb29",
                "name" : "origin/rc_dev_suxi"
              }
            ]
          }
        },
        "origin/rc_dev_taiyang_ctrl" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1771,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "4ba1d6d39371013ba90023bb6ab4d337e8aa18a2",
            "branch" : [
              {
                "SHA1" : "4ba1d6d39371013ba90023bb6ab4d337e8aa18a2",
                "name" : "origin/rc_dev_taiyang_ctrl"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4ba1d6d39371013ba90023bb6ab4d337e8aa18a2",
            "branch" : [
              {
                "SHA1" : "4ba1d6d39371013ba90023bb6ab4d337e8aa18a2",
                "name" : "origin/rc_dev_taiyang_ctrl"
              }
            ]
          }
        },
        "origin/rc_dev_qingdaodagang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1260,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_qingdaodagang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
            "branch" : [
              {
                "SHA1" : "6858447f1f5c9e880a747d653217350f3c4ea0a0",
                "name" : "origin/rc_dev_qingdaodagang"
              }
            ]
          }
        },
        "origin/rc_dev_baoshishun" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2130,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b080c3140afa34324a990cf86e60f3a92affb918",
            "branch" : [
              {
                "SHA1" : "b080c3140afa34324a990cf86e60f3a92affb918",
                "name" : "origin/rc_dev_baoshishun"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b080c3140afa34324a990cf86e60f3a92affb918",
            "branch" : [
              {
                "SHA1" : "b080c3140afa34324a990cf86e60f3a92affb918",
                "name" : "origin/rc_dev_baoshishun"
              }
            ]
          }
        },
        "origin/feat-xilian" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 381,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "95f15a0454380530b0bf028c6917a34abaa43378",
            "branch" : [
              {
                "SHA1" : "95f15a0454380530b0bf028c6917a34abaa43378",
                "name" : "origin/feat-xilian"
              }
            ]
          },
          "revision" : {
            "SHA1" : "95f15a0454380530b0bf028c6917a34abaa43378",
            "branch" : [
              {
                "SHA1" : "95f15a0454380530b0bf028c6917a34abaa43378",
                "name" : "origin/feat-xilian"
              }
            ]
          }
        },
        "origin/rc_dev_youyiguan" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1977,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1be039cfa092298ec02479636537b6550f1b9152",
            "branch" : [
              {
                "SHA1" : "1be039cfa092298ec02479636537b6550f1b9152",
                "name" : "origin/rc_dev_youyiguan"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1be039cfa092298ec02479636537b6550f1b9152",
            "branch" : [
              {
                "SHA1" : "1be039cfa092298ec02479636537b6550f1b9152",
                "name" : "origin/rc_dev_youyiguan"
              }
            ]
          }
        },
        "origin/rc_dev_tangshanjinxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2175,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1b306566b5e66a524235d5f2635d6ef234fcc6a8",
            "branch" : [
              {
                "SHA1" : "1b306566b5e66a524235d5f2635d6ef234fcc6a8",
                "name" : "origin/rc_dev_tangshanjinxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1b306566b5e66a524235d5f2635d6ef234fcc6a8",
            "branch" : [
              {
                "SHA1" : "1b306566b5e66a524235d5f2635d6ef234fcc6a8",
                "name" : "origin/rc_dev_tangshanjinxi"
              }
            ]
          }
        },
        "origin/rc_dev_xiamen" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1840,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "483fabd931605b5fe19a49de9f1cbbb1097f497b",
            "branch" : [
              {
                "SHA1" : "483fabd931605b5fe19a49de9f1cbbb1097f497b",
                "name" : "origin/rc_dev_xiamen"
              }
            ]
          },
          "revision" : {
            "SHA1" : "483fabd931605b5fe19a49de9f1cbbb1097f497b",
            "branch" : [
              {
                "SHA1" : "483fabd931605b5fe19a49de9f1cbbb1097f497b",
                "name" : "origin/rc_dev_xiamen"
              }
            ]
          }
        },
        "origin/rc_dev_weiqiao" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2165,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "77e314b6ec1f478bfb91514c971c5d2c05d05744",
            "branch" : [
              {
                "SHA1" : "77e314b6ec1f478bfb91514c971c5d2c05d05744",
                "name" : "origin/rc_dev_weiqiao"
              }
            ]
          },
          "revision" : {
            "SHA1" : "77e314b6ec1f478bfb91514c971c5d2c05d05744",
            "branch" : [
              {
                "SHA1" : "77e314b6ec1f478bfb91514c971c5d2c05d05744",
                "name" : "origin/rc_dev_weiqiao"
              }
            ]
          }
        },
        "origin/rc_dev_xilian" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2102,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
            "branch" : [
              {
                "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
                "name" : "origin/rc_dev_xilian"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
            "branch" : [
              {
                "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
                "name" : "origin/rc_dev_xilian"
              }
            ]
          }
        },
        "origin/feat_monitor_frame" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 331,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ca7c2a8369584e2797d47ddc5bcee2e7bc94013a",
            "branch" : [
              {
                "SHA1" : "ca7c2a8369584e2797d47ddc5bcee2e7bc94013a",
                "name" : "origin/feat_monitor_frame"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ca7c2a8369584e2797d47ddc5bcee2e7bc94013a",
            "branch" : [
              {
                "SHA1" : "ca7c2a8369584e2797d47ddc5bcee2e7bc94013a",
                "name" : "origin/feat_monitor_frame"
              }
            ]
          }
        },
        "origin/rc_dev_yantaigunzhuang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2174,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "45405ae4f7f78b275cc6e9dd8f36cc2a220f9e37",
            "branch" : [
              {
                "SHA1" : "45405ae4f7f78b275cc6e9dd8f36cc2a220f9e37",
                "name" : "origin/rc_dev_yantaigunzhuang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "45405ae4f7f78b275cc6e9dd8f36cc2a220f9e37",
            "branch" : [
              {
                "SHA1" : "45405ae4f7f78b275cc6e9dd8f36cc2a220f9e37",
                "name" : "origin/rc_dev_yantaigunzhuang"
              }
            ]
          }
        },
        "origin/rc_dev_wuhanzhongtielianji" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2166,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "548659540c3568147388dbcf79627429cb5288eb",
            "branch" : [
              {
                "SHA1" : "548659540c3568147388dbcf79627429cb5288eb",
                "name" : "origin/rc_dev_wuhanzhongtielianji"
              }
            ]
          },
          "revision" : {
            "SHA1" : "548659540c3568147388dbcf79627429cb5288eb",
            "branch" : [
              {
                "SHA1" : "548659540c3568147388dbcf79627429cb5288eb",
                "name" : "origin/rc_dev_wuhanzhongtielianji"
              }
            ]
          }
        },
        "origin/rc_dev_weihai" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2144,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "40c221ec332fa1e028f30da761372becdb391501",
            "branch" : [
              {
                "SHA1" : "40c221ec332fa1e028f30da761372becdb391501",
                "name" : "origin/rc_dev_weihai"
              }
            ]
          },
          "revision" : {
            "SHA1" : "40c221ec332fa1e028f30da761372becdb391501",
            "branch" : [
              {
                "SHA1" : "40c221ec332fa1e028f30da761372becdb391501",
                "name" : "origin/rc_dev_weihai"
              }
            ]
          }
        },
        "origin/rc_dev_mandula" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1348,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fe3fc1534c53f91f596b9458776afd6d2364f0a2",
            "branch" : [
              {
                "SHA1" : "fe3fc1534c53f91f596b9458776afd6d2364f0a2",
                "name" : "origin/rc_dev_mandula"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fe3fc1534c53f91f596b9458776afd6d2364f0a2",
            "branch" : [
              {
                "SHA1" : "fe3fc1534c53f91f596b9458776afd6d2364f0a2",
                "name" : "origin/rc_dev_mandula"
              }
            ]
          }
        },
        "origin/feat_suxi_oldtmp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2037,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "69d9a06f8c7221ce10c5d955a81fc9684aa206c3",
            "branch" : [
              {
                "SHA1" : "69d9a06f8c7221ce10c5d955a81fc9684aa206c3",
                "name" : "origin/feat_suxi_oldtmp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "69d9a06f8c7221ce10c5d955a81fc9684aa206c3",
            "branch" : [
              {
                "SHA1" : "69d9a06f8c7221ce10c5d955a81fc9684aa206c3",
                "name" : "origin/feat_suxi_oldtmp"
              }
            ]
          }
        },
        "origin/rc_dev_daxie" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2158,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5b4fc8786cda625874e52841a77c7984f7ec0e70",
            "branch" : [
              {
                "SHA1" : "5b4fc8786cda625874e52841a77c7984f7ec0e70",
                "name" : "origin/rc_dev_daxie"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5b4fc8786cda625874e52841a77c7984f7ec0e70",
            "branch" : [
              {
                "SHA1" : "5b4fc8786cda625874e52841a77c7984f7ec0e70",
                "name" : "origin/rc_dev_daxie"
              }
            ]
          }
        },
        "origin/feat_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1184,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "289cda308241280b261706930b818b90420fcb5f",
            "branch" : [
              {
                "SHA1" : "289cda308241280b261706930b818b90420fcb5f",
                "name" : "origin/feat_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "289cda308241280b261706930b818b90420fcb5f",
            "branch" : [
              {
                "SHA1" : "289cda308241280b261706930b818b90420fcb5f",
                "name" : "origin/feat_qiangang"
              }
            ]
          }
        },
        "origin/feat-peripheral_op_state_aee7704c" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 109,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "aee7704cc51112ff34a8ad6cd572c220a21952d0",
            "branch" : [
              {
                "SHA1" : "aee7704cc51112ff34a8ad6cd572c220a21952d0",
                "name" : "origin/feat-peripheral_op_state_aee7704c"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aee7704cc51112ff34a8ad6cd572c220a21952d0",
            "branch" : [
              {
                "SHA1" : "aee7704cc51112ff34a8ad6cd572c220a21952d0",
                "name" : "origin/feat-peripheral_op_state_aee7704c"
              }
            ]
          }
        },
        "origin/rc_dev_93cc60" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 385,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "93cc602576f9f342ff85e9cc672a683b99db923b",
            "branch" : [
              {
                "SHA1" : "93cc602576f9f342ff85e9cc672a683b99db923b",
                "name" : "origin/rc_dev_93cc60"
              }
            ]
          },
          "revision" : {
            "SHA1" : "93cc602576f9f342ff85e9cc672a683b99db923b",
            "branch" : [
              {
                "SHA1" : "93cc602576f9f342ff85e9cc672a683b99db923b",
                "name" : "origin/rc_dev_93cc60"
              }
            ]
          }
        },
        "origin/feat_mandula" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 742,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "da90fef6f7663bb03c4bdfcf266c45b4ec60499a",
            "branch" : [
              {
                "SHA1" : "da90fef6f7663bb03c4bdfcf266c45b4ec60499a",
                "name" : "origin/feat_mandula"
              }
            ]
          },
          "revision" : {
            "SHA1" : "da90fef6f7663bb03c4bdfcf266c45b4ec60499a",
            "branch" : [
              {
                "SHA1" : "da90fef6f7663bb03c4bdfcf266c45b4ec60499a",
                "name" : "origin/feat_mandula"
              }
            ]
          }
        },
        "origin/feat_suxi_patch" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 985,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
            "branch" : [
              {
                "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
                "name" : "origin/feat_suxi_patch"
              }
            ]
          },
          "revision" : {
            "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
            "branch" : [
              {
                "SHA1" : "762ac69a8087af8a7d2988094ab4943f538e8a04",
                "name" : "origin/feat_suxi_patch"
              }
            ]
          }
        },
        "origin/feat_tc_v2_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1793,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bcbc5de637a9a70f2d4a3f32247a71a67dbfd4a0",
            "branch" : [
              {
                "SHA1" : "bcbc5de637a9a70f2d4a3f32247a71a67dbfd4a0",
                "name" : "origin/feat_tc_v2_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bcbc5de637a9a70f2d4a3f32247a71a67dbfd4a0",
            "branch" : [
              {
                "SHA1" : "bcbc5de637a9a70f2d4a3f32247a71a67dbfd4a0",
                "name" : "origin/feat_tc_v2_qiangang"
              }
            ]
          }
        },
        "origin/feat_tc_v2_suxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1812,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "eadbbf60c2f42f9cc816ea239eb5310f19bef058",
            "branch" : [
              {
                "SHA1" : "eadbbf60c2f42f9cc816ea239eb5310f19bef058",
                "name" : "origin/feat_tc_v2_suxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "eadbbf60c2f42f9cc816ea239eb5310f19bef058",
            "branch" : [
              {
                "SHA1" : "eadbbf60c2f42f9cc816ea239eb5310f19bef058",
                "name" : "origin/feat_tc_v2_suxi"
              }
            ]
          }
        },
        "origin/rc_dev_jiningliangshangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2103,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
            "branch" : [
              {
                "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
                "name" : "origin/rc_dev_jiningliangshangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
            "branch" : [
              {
                "SHA1" : "f820c4ad43107c56f407831e44f6bc87cbbfff7f",
                "name" : "origin/rc_dev_jiningliangshangang"
              }
            ]
          }
        },
        "origin/feat-peripheral_qiangang_d5b225" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 327,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d5b2257a0fb952d19ad035f23b88df52bd27e9ff",
            "branch" : [
              {
                "SHA1" : "d5b2257a0fb952d19ad035f23b88df52bd27e9ff",
                "name" : "origin/feat-peripheral_qiangang_d5b225"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d5b2257a0fb952d19ad035f23b88df52bd27e9ff",
            "branch" : [
              {
                "SHA1" : "d5b2257a0fb952d19ad035f23b88df52bd27e9ff",
                "name" : "origin/feat-peripheral_qiangang_d5b225"
              }
            ]
          }
        },
        "origin/rc_dev_shenqi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1450,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "31f70a912caef9f3c2e3745c0e9b19467b7ca967",
            "branch" : [
              {
                "SHA1" : "31f70a912caef9f3c2e3745c0e9b19467b7ca967",
                "name" : "origin/rc_dev_shenqi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "31f70a912caef9f3c2e3745c0e9b19467b7ca967",
            "branch" : [
              {
                "SHA1" : "31f70a912caef9f3c2e3745c0e9b19467b7ca967",
                "name" : "origin/rc_dev_shenqi"
              }
            ]
          }
        },
        "origin/feat_youyiguan_pnc_status" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1630,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b338fbf811a4f2c0c39e71ee62f18c35757f0b1d",
            "branch" : [
              {
                "SHA1" : "b338fbf811a4f2c0c39e71ee62f18c35757f0b1d",
                "name" : "origin/feat_youyiguan_pnc_status"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b338fbf811a4f2c0c39e71ee62f18c35757f0b1d",
            "branch" : [
              {
                "SHA1" : "b338fbf811a4f2c0c39e71ee62f18c35757f0b1d",
                "name" : "origin/feat_youyiguan_pnc_status"
              }
            ]
          }
        },
        "origin/dev_ros2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2177,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
            "branch" : [
              {
                "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
                "name" : "origin/dev_ros2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
            "branch" : [
              {
                "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
                "name" : "origin/dev_ros2"
              }
            ]
          }
        },
        "origin/rc_dev_youyiguan_test" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1220,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f62c9602eebae4706b4494e12452559212efb66a",
            "branch" : [
              {
                "SHA1" : "f62c9602eebae4706b4494e12452559212efb66a",
                "name" : "origin/rc_dev_youyiguan_test"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f62c9602eebae4706b4494e12452559212efb66a",
            "branch" : [
              {
                "SHA1" : "f62c9602eebae4706b4494e12452559212efb66a",
                "name" : "origin/rc_dev_youyiguan_test"
              }
            ]
          }
        },
        "origin/feat_xilian_patch" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1477,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1e6c6aa34911755a34f4cc4acec03c6c30a2e604",
            "branch" : [
              {
                "SHA1" : "1e6c6aa34911755a34f4cc4acec03c6c30a2e604",
                "name" : "origin/feat_xilian_patch"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1e6c6aa34911755a34f4cc4acec03c6c30a2e604",
            "branch" : [
              {
                "SHA1" : "1e6c6aa34911755a34f4cc4acec03c6c30a2e604",
                "name" : "origin/feat_xilian_patch"
              }
            ]
          }
        },
        "origin/rc_dev_184937" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 876,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "184937840d35a83cb9158067f5fc65458db35e7a",
            "branch" : [
              {
                "SHA1" : "184937840d35a83cb9158067f5fc65458db35e7a",
                "name" : "origin/rc_dev_184937"
              }
            ]
          },
          "revision" : {
            "SHA1" : "184937840d35a83cb9158067f5fc65458db35e7a",
            "branch" : [
              {
                "SHA1" : "184937840d35a83cb9158067f5fc65458db35e7a",
                "name" : "origin/rc_dev_184937"
              }
            ]
          }
        },
        "origin/rc_dev_yangpu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2171,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "542b54142a97e21788a87fd638595d7b8f85e37f",
            "branch" : [
              {
                "SHA1" : "542b54142a97e21788a87fd638595d7b8f85e37f",
                "name" : "origin/rc_dev_yangpu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "542b54142a97e21788a87fd638595d7b8f85e37f",
            "branch" : [
              {
                "SHA1" : "542b54142a97e21788a87fd638595d7b8f85e37f",
                "name" : "origin/rc_dev_yangpu"
              }
            ]
          }
        },
        "origin/feat_tc_v2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1938,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b34e00e37e0d3a5818ba0ebb75422c11ae3b6b28",
            "branch" : [
              {
                "SHA1" : "b34e00e37e0d3a5818ba0ebb75422c11ae3b6b28",
                "name" : "origin/feat_tc_v2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b34e00e37e0d3a5818ba0ebb75422c11ae3b6b28",
            "branch" : [
              {
                "SHA1" : "b34e00e37e0d3a5818ba0ebb75422c11ae3b6b28",
                "name" : "origin/feat_tc_v2"
              }
            ]
          }
        },
        "origin/rc_dev_weifang_container" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2170,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "546ecdbcea2f86ee501ec1340a052e5751657754",
            "branch" : [
              {
                "SHA1" : "546ecdbcea2f86ee501ec1340a052e5751657754",
                "name" : "origin/rc_dev_weifang_container"
              }
            ]
          },
          "revision" : {
            "SHA1" : "546ecdbcea2f86ee501ec1340a052e5751657754",
            "branch" : [
              {
                "SHA1" : "546ecdbcea2f86ee501ec1340a052e5751657754",
                "name" : "origin/rc_dev_weifang_container"
              }
            ]
          }
        },
        "origin/rc_dev_qiangang_config" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2173,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "45ef1220ae218999449b078d0af2c8c9d4ea57bc",
            "branch" : [
              {
                "SHA1" : "45ef1220ae218999449b078d0af2c8c9d4ea57bc",
                "name" : "origin/rc_dev_qiangang_config"
              }
            ]
          },
          "revision" : {
            "SHA1" : "45ef1220ae218999449b078d0af2c8c9d4ea57bc",
            "branch" : [
              {
                "SHA1" : "45ef1220ae218999449b078d0af2c8c9d4ea57bc",
                "name" : "origin/rc_dev_qiangang_config"
              }
            ]
          }
        },
        "origin/rc_dev_luojing" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2022,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "32334d000675a8e9faa66ac5b3334a4eb573a3fb",
            "branch" : [
              {
                "SHA1" : "32334d000675a8e9faa66ac5b3334a4eb573a3fb",
                "name" : "origin/rc_dev_luojing"
              }
            ]
          },
          "revision" : {
            "SHA1" : "32334d000675a8e9faa66ac5b3334a4eb573a3fb",
            "branch" : [
              {
                "SHA1" : "32334d000675a8e9faa66ac5b3334a4eb573a3fb",
                "name" : "origin/rc_dev_luojing"
              }
            ]
          }
        },
        "origin/feat_qiangang_side_pass" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1676,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0daa1f7f08156df5a55cf90342da631b318e2d3d",
            "branch" : [
              {
                "SHA1" : "0daa1f7f08156df5a55cf90342da631b318e2d3d",
                "name" : "origin/feat_qiangang_side_pass"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0daa1f7f08156df5a55cf90342da631b318e2d3d",
            "branch" : [
              {
                "SHA1" : "0daa1f7f08156df5a55cf90342da631b318e2d3d",
                "name" : "origin/feat_qiangang_side_pass"
              }
            ]
          }
        },
        "origin/rc_dev_jiaxingdongfangtegang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2168,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f81898909167f9f8c7dee4f7367c611c2268d138",
            "branch" : [
              {
                "SHA1" : "f81898909167f9f8c7dee4f7367c611c2268d138",
                "name" : "origin/rc_dev_jiaxingdongfangtegang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f81898909167f9f8c7dee4f7367c611c2268d138",
            "branch" : [
              {
                "SHA1" : "f81898909167f9f8c7dee4f7367c611c2268d138",
                "name" : "origin/rc_dev_jiaxingdongfangtegang"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
        "branch" : [
          {
            "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
            "name" : "origin/dev_ros2"
          }
        ]
      },
      "remoteUrls" : [
        "http://159.27.226.4/shared/shared_msgs.git"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/feat_truck_reverse_old" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 649,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c3c62c1259448726e4fed5ee5e7696969b460623",
            "branch" : [
              {
                "SHA1" : "c3c62c1259448726e4fed5ee5e7696969b460623",
                "name" : "origin/feat_truck_reverse_old"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c3c62c1259448726e4fed5ee5e7696969b460623",
            "branch" : [
              {
                "SHA1" : "c3c62c1259448726e4fed5ee5e7696969b460623",
                "name" : "origin/feat_truck_reverse_old"
              }
            ]
          }
        },
        "origin/test_chongqing" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2098,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "67db1a9a49b520b3867908ded72f67324ab3d22f",
            "branch" : [
              {
                "SHA1" : "67db1a9a49b520b3867908ded72f67324ab3d22f",
                "name" : "origin/test_chongqing"
              }
            ]
          },
          "revision" : {
            "SHA1" : "67db1a9a49b520b3867908ded72f67324ab3d22f",
            "branch" : [
              {
                "SHA1" : "67db1a9a49b520b3867908ded72f67324ab3d22f",
                "name" : "origin/test_chongqing"
              }
            ]
          }
        },
        "origin/feat_safety_check_xl" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 517,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "eba85868178acebed483c2d7c3fcfcc2836073d4",
            "branch" : [
              {
                "SHA1" : "eba85868178acebed483c2d7c3fcfcc2836073d4",
                "name" : "origin/feat_safety_check_xl"
              }
            ]
          },
          "revision" : {
            "SHA1" : "eba85868178acebed483c2d7c3fcfcc2836073d4",
            "branch" : [
              {
                "SHA1" : "eba85868178acebed483c2d7c3fcfcc2836073d4",
                "name" : "origin/feat_safety_check_xl"
              }
            ]
          }
        },
        "origin/dev_log" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 92,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7dfda59c1971723325dedb18473b9707099fc64f",
            "branch" : [
              {
                "SHA1" : "7dfda59c1971723325dedb18473b9707099fc64f",
                "name" : "origin/dev_log"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7dfda59c1971723325dedb18473b9707099fc64f",
            "branch" : [
              {
                "SHA1" : "7dfda59c1971723325dedb18473b9707099fc64f",
                "name" : "origin/dev_log"
              }
            ]
          }
        },
        "origin/remote_control" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 106,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f2659e2c7ebfe5acd5ce2af20af2985c13183208",
            "branch" : [
              {
                "SHA1" : "f2659e2c7ebfe5acd5ce2af20af2985c13183208",
                "name" : "origin/remote_control"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f2659e2c7ebfe5acd5ce2af20af2985c13183208",
            "branch" : [
              {
                "SHA1" : "f2659e2c7ebfe5acd5ce2af20af2985c13183208",
                "name" : "origin/remote_control"
              }
            ]
          }
        },
        "origin/feat_xl_park" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 190,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b328ff7f08dfeea96983be75d14da25ce62380b5",
            "branch" : [
              {
                "SHA1" : "b328ff7f08dfeea96983be75d14da25ce62380b5",
                "name" : "origin/feat_xl_park"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b328ff7f08dfeea96983be75d14da25ce62380b5",
            "branch" : [
              {
                "SHA1" : "b328ff7f08dfeea96983be75d14da25ce62380b5",
                "name" : "origin/feat_xl_park"
              }
            ]
          }
        },
        "origin/dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 888,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bd6730672469a4c0ff0d9e2de8c3e7dffec58f45",
            "branch" : [
              {
                "SHA1" : "bd6730672469a4c0ff0d9e2de8c3e7dffec58f45",
                "name" : "origin/dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bd6730672469a4c0ff0d9e2de8c3e7dffec58f45",
            "branch" : [
              {
                "SHA1" : "bd6730672469a4c0ff0d9e2de8c3e7dffec58f45",
                "name" : "origin/dev"
              }
            ]
          }
        },
        "origin/feat_cargo_width" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1323,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f0087f099cc51505e90abfe5eadc282c256aeb3d",
            "branch" : [
              {
                "SHA1" : "f0087f099cc51505e90abfe5eadc282c256aeb3d",
                "name" : "origin/feat_cargo_width"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f0087f099cc51505e90abfe5eadc282c256aeb3d",
            "branch" : [
              {
                "SHA1" : "f0087f099cc51505e90abfe5eadc282c256aeb3d",
                "name" : "origin/feat_cargo_width"
              }
            ]
          }
        },
        "origin/feat-path" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 337,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a9ed65d4cecf986ce0901c28f2bb2ade49e25316",
            "branch" : [
              {
                "SHA1" : "a9ed65d4cecf986ce0901c28f2bb2ade49e25316",
                "name" : "origin/feat-path"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a9ed65d4cecf986ce0901c28f2bb2ade49e25316",
            "branch" : [
              {
                "SHA1" : "a9ed65d4cecf986ce0901c28f2bb2ade49e25316",
                "name" : "origin/feat-path"
              }
            ]
          }
        },
        "origin/tmp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 364,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "343e9a939958ff74a579dbb08fa1f3dda8b14480",
            "branch" : [
              {
                "SHA1" : "343e9a939958ff74a579dbb08fa1f3dda8b14480",
                "name" : "origin/tmp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "343e9a939958ff74a579dbb08fa1f3dda8b14480",
            "branch" : [
              {
                "SHA1" : "343e9a939958ff74a579dbb08fa1f3dda8b14480",
                "name" : "origin/tmp"
              }
            ]
          }
        },
        "origin/temp_hfsm" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 103,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ddee85ec821243f9bd15fd2307b5e74763b61f78",
            "branch" : [
              {
                "SHA1" : "ddee85ec821243f9bd15fd2307b5e74763b61f78",
                "name" : "origin/temp_hfsm"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ddee85ec821243f9bd15fd2307b5e74763b61f78",
            "branch" : [
              {
                "SHA1" : "ddee85ec821243f9bd15fd2307b5e74763b61f78",
                "name" : "origin/temp_hfsm"
              }
            ]
          }
        },
        "origin/feat_daxie_1" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1114,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3ad7410fd050bad1ba844127c2ac1869c3b9e96e",
            "branch" : [
              {
                "SHA1" : "3ad7410fd050bad1ba844127c2ac1869c3b9e96e",
                "name" : "origin/feat_daxie_1"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3ad7410fd050bad1ba844127c2ac1869c3b9e96e",
            "branch" : [
              {
                "SHA1" : "3ad7410fd050bad1ba844127c2ac1869c3b9e96e",
                "name" : "origin/feat_daxie_1"
              }
            ]
          }
        },
        "origin/feat_keb_offboard_html" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2130,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f2008e75ef78e35e6a63d1c338ecb00f141d2769",
            "branch" : [
              {
                "SHA1" : "f2008e75ef78e35e6a63d1c338ecb00f141d2769",
                "name" : "origin/feat_keb_offboard_html"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f2008e75ef78e35e6a63d1c338ecb00f141d2769",
            "branch" : [
              {
                "SHA1" : "f2008e75ef78e35e6a63d1c338ecb00f141d2769",
                "name" : "origin/feat_keb_offboard_html"
              }
            ]
          }
        },
        "origin/daxie_lane_change" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 705,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c38300b97f751a000c01dac554ddc08079b115a5",
            "branch" : [
              {
                "SHA1" : "c38300b97f751a000c01dac554ddc08079b115a5",
                "name" : "origin/daxie_lane_change"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c38300b97f751a000c01dac554ddc08079b115a5",
            "branch" : [
              {
                "SHA1" : "c38300b97f751a000c01dac554ddc08079b115a5",
                "name" : "origin/daxie_lane_change"
              }
            ]
          }
        },
        "origin/feat_qg_ssep" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 615,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f6a4cff1ffa71f8fcb152307b12550b9beb14457",
            "branch" : [
              {
                "SHA1" : "f6a4cff1ffa71f8fcb152307b12550b9beb14457",
                "name" : "origin/feat_qg_ssep"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f6a4cff1ffa71f8fcb152307b12550b9beb14457",
            "branch" : [
              {
                "SHA1" : "f6a4cff1ffa71f8fcb152307b12550b9beb14457",
                "name" : "origin/feat_qg_ssep"
              }
            ]
          }
        },
        "origin/feat_yp_LD" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1464,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5096ef765bd12a34104c0eaface2ed4771e89c42",
            "branch" : [
              {
                "SHA1" : "5096ef765bd12a34104c0eaface2ed4771e89c42",
                "name" : "origin/feat_yp_LD"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5096ef765bd12a34104c0eaface2ed4771e89c42",
            "branch" : [
              {
                "SHA1" : "5096ef765bd12a34104c0eaface2ed4771e89c42",
                "name" : "origin/feat_yp_LD"
              }
            ]
          }
        },
        "origin/feat_xilian_speed_limit" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 328,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0880da9730cce8b9668b50ca9ea83254e6342878",
            "branch" : [
              {
                "SHA1" : "0880da9730cce8b9668b50ca9ea83254e6342878",
                "name" : "origin/feat_xilian_speed_limit"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0880da9730cce8b9668b50ca9ea83254e6342878",
            "branch" : [
              {
                "SHA1" : "0880da9730cce8b9668b50ca9ea83254e6342878",
                "name" : "origin/feat_xilian_speed_limit"
              }
            ]
          }
        },
        "origin/test_movestep_safe" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1957,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a9e7e536dc43036d73cdf31b265021a8721d55b6",
            "branch" : [
              {
                "SHA1" : "a9e7e536dc43036d73cdf31b265021a8721d55b6",
                "name" : "origin/test_movestep_safe"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a9e7e536dc43036d73cdf31b265021a8721d55b6",
            "branch" : [
              {
                "SHA1" : "a9e7e536dc43036d73cdf31b265021a8721d55b6",
                "name" : "origin/test_movestep_safe"
              }
            ]
          }
        },
        "origin/feat_hdmap_dynamic_sidepass" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 387,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "42ac720f59648f1626e92b9897cf793e3f34f893",
            "branch" : [
              {
                "SHA1" : "42ac720f59648f1626e92b9897cf793e3f34f893",
                "name" : "origin/feat_hdmap_dynamic_sidepass"
              }
            ]
          },
          "revision" : {
            "SHA1" : "42ac720f59648f1626e92b9897cf793e3f34f893",
            "branch" : [
              {
                "SHA1" : "42ac720f59648f1626e92b9897cf793e3f34f893",
                "name" : "origin/feat_hdmap_dynamic_sidepass"
              }
            ]
          }
        },
        "origin/feat_seaside" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 855,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "32572e0a5cf080be0a5f9b0166321401a2c65b60",
            "branch" : [
              {
                "SHA1" : "32572e0a5cf080be0a5f9b0166321401a2c65b60",
                "name" : "origin/feat_seaside"
              }
            ]
          },
          "revision" : {
            "SHA1" : "32572e0a5cf080be0a5f9b0166321401a2c65b60",
            "branch" : [
              {
                "SHA1" : "32572e0a5cf080be0a5f9b0166321401a2c65b60",
                "name" : "origin/feat_seaside"
              }
            ]
          }
        },
        "origin/feat_remote" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1257,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "82b6c62336e681fa911b2f8b86cb34bbcf29642f",
            "branch" : [
              {
                "SHA1" : "82b6c62336e681fa911b2f8b86cb34bbcf29642f",
                "name" : "origin/feat_remote"
              }
            ]
          },
          "revision" : {
            "SHA1" : "82b6c62336e681fa911b2f8b86cb34bbcf29642f",
            "branch" : [
              {
                "SHA1" : "82b6c62336e681fa911b2f8b86cb34bbcf29642f",
                "name" : "origin/feat_remote"
              }
            ]
          }
        },
        "origin/feat_destination_type" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 135,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b51cc7e3e3d9d3aa46f780b17d3a38e68a9d43b5",
            "branch" : [
              {
                "SHA1" : "b51cc7e3e3d9d3aa46f780b17d3a38e68a9d43b5",
                "name" : "origin/feat_destination_type"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b51cc7e3e3d9d3aa46f780b17d3a38e68a9d43b5",
            "branch" : [
              {
                "SHA1" : "b51cc7e3e3d9d3aa46f780b17d3a38e68a9d43b5",
                "name" : "origin/feat_destination_type"
              }
            ]
          }
        },
        "origin/feat_new_lka" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 725,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a5ddf2bf4bb5d3d6c0645f5dc27979824425bfbf",
            "branch" : [
              {
                "SHA1" : "a5ddf2bf4bb5d3d6c0645f5dc27979824425bfbf",
                "name" : "origin/feat_new_lka"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a5ddf2bf4bb5d3d6c0645f5dc27979824425bfbf",
            "branch" : [
              {
                "SHA1" : "a5ddf2bf4bb5d3d6c0645f5dc27979824425bfbf",
                "name" : "origin/feat_new_lka"
              }
            ]
          }
        },
        "origin/feat_chassis_err" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 257,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1b3a0efd43c6f5750340d80aad3f191373ddf48f",
            "branch" : [
              {
                "SHA1" : "1b3a0efd43c6f5750340d80aad3f191373ddf48f",
                "name" : "origin/feat_chassis_err"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1b3a0efd43c6f5750340d80aad3f191373ddf48f",
            "branch" : [
              {
                "SHA1" : "1b3a0efd43c6f5750340d80aad3f191373ddf48f",
                "name" : "origin/feat_chassis_err"
              }
            ]
          }
        },
        "origin/feat_entrance" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1211,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c7d55549d1fa29cc760a8efdb29a40e01d6d9147",
            "branch" : [
              {
                "SHA1" : "c7d55549d1fa29cc760a8efdb29a40e01d6d9147",
                "name" : "origin/feat_entrance"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c7d55549d1fa29cc760a8efdb29a40e01d6d9147",
            "branch" : [
              {
                "SHA1" : "c7d55549d1fa29cc760a8efdb29a40e01d6d9147",
                "name" : "origin/feat_entrance"
              }
            ]
          }
        },
        "origin/feat_yangpu1" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1852,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fcb1fdf1c53233f194b8e9f1689ec363d96b4305",
            "branch" : [
              {
                "SHA1" : "fcb1fdf1c53233f194b8e9f1689ec363d96b4305",
                "name" : "origin/feat_yangpu1"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fcb1fdf1c53233f194b8e9f1689ec363d96b4305",
            "branch" : [
              {
                "SHA1" : "fcb1fdf1c53233f194b8e9f1689ec363d96b4305",
                "name" : "origin/feat_yangpu1"
              }
            ]
          }
        },
        "origin/cl_action_type" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 239,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e6a438b106a2477add9de57f4f989471f7f9cbc3",
            "branch" : [
              {
                "SHA1" : "e6a438b106a2477add9de57f4f989471f7f9cbc3",
                "name" : "origin/cl_action_type"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e6a438b106a2477add9de57f4f989471f7f9cbc3",
            "branch" : [
              {
                "SHA1" : "e6a438b106a2477add9de57f4f989471f7f9cbc3",
                "name" : "origin/cl_action_type"
              }
            ]
          }
        },
        "origin/feat_qg_LD" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1074,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e57fe3ca793b6a61fc10de0c24e2ccf524d99813",
            "branch" : [
              {
                "SHA1" : "e57fe3ca793b6a61fc10de0c24e2ccf524d99813",
                "name" : "origin/feat_qg_LD"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e57fe3ca793b6a61fc10de0c24e2ccf524d99813",
            "branch" : [
              {
                "SHA1" : "e57fe3ca793b6a61fc10de0c24e2ccf524d99813",
                "name" : "origin/feat_qg_LD"
              }
            ]
          }
        },
        "origin/feat_bulk_target" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 380,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0c20e4b451ce1fc8c5e1601a83aa468afcc7c3d0",
            "branch" : [
              {
                "SHA1" : "0c20e4b451ce1fc8c5e1601a83aa468afcc7c3d0",
                "name" : "origin/feat_bulk_target"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0c20e4b451ce1fc8c5e1601a83aa468afcc7c3d0",
            "branch" : [
              {
                "SHA1" : "0c20e4b451ce1fc8c5e1601a83aa468afcc7c3d0",
                "name" : "origin/feat_bulk_target"
              }
            ]
          }
        },
        "origin/feat_truck_reverse_tmp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 711,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a1c5943493421474ff3e42146b128ba57c28b486",
            "branch" : [
              {
                "SHA1" : "a1c5943493421474ff3e42146b128ba57c28b486",
                "name" : "origin/feat_truck_reverse_tmp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a1c5943493421474ff3e42146b128ba57c28b486",
            "branch" : [
              {
                "SHA1" : "a1c5943493421474ff3e42146b128ba57c28b486",
                "name" : "origin/feat_truck_reverse_tmp"
              }
            ]
          }
        },
        "origin/feat_pnc_target" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 672,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1a53d5a00fd45c684e78b66d519f642beee50fb7",
            "branch" : [
              {
                "SHA1" : "1a53d5a00fd45c684e78b66d519f642beee50fb7",
                "name" : "origin/feat_pnc_target"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1a53d5a00fd45c684e78b66d519f642beee50fb7",
            "branch" : [
              {
                "SHA1" : "1a53d5a00fd45c684e78b66d519f642beee50fb7",
                "name" : "origin/feat_pnc_target"
              }
            ]
          }
        },
        "origin/feat_task" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2030,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "dbfe05f83bac1eb0159e06d9a0382522d3afa3d0",
            "branch" : [
              {
                "SHA1" : "dbfe05f83bac1eb0159e06d9a0382522d3afa3d0",
                "name" : "origin/feat_task"
              }
            ]
          },
          "revision" : {
            "SHA1" : "dbfe05f83bac1eb0159e06d9a0382522d3afa3d0",
            "branch" : [
              {
                "SHA1" : "dbfe05f83bac1eb0159e06d9a0382522d3afa3d0",
                "name" : "origin/feat_task"
              }
            ]
          }
        },
        "origin/feat_ssep_wbca_2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 869,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "031678cb50ea58b10b2d14e027c86a97487b8a20",
            "branch" : [
              {
                "SHA1" : "031678cb50ea58b10b2d14e027c86a97487b8a20",
                "name" : "origin/feat_ssep_wbca_2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "031678cb50ea58b10b2d14e027c86a97487b8a20",
            "branch" : [
              {
                "SHA1" : "031678cb50ea58b10b2d14e027c86a97487b8a20",
                "name" : "origin/feat_ssep_wbca_2"
              }
            ]
          }
        },
        "origin/feat_target" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 812,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a713ad7789ccfa7445b4d39ed2eea3948aa5cd31",
            "branch" : [
              {
                "SHA1" : "a713ad7789ccfa7445b4d39ed2eea3948aa5cd31",
                "name" : "origin/feat_target"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a713ad7789ccfa7445b4d39ed2eea3948aa5cd31",
            "branch" : [
              {
                "SHA1" : "a713ad7789ccfa7445b4d39ed2eea3948aa5cd31",
                "name" : "origin/feat_target"
              }
            ]
          }
        },
        "origin/feat_qianggang_refactor_base" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1347,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "85b0e015f22a97ba8a1152c12fed667f3f594ac4",
            "branch" : [
              {
                "SHA1" : "85b0e015f22a97ba8a1152c12fed667f3f594ac4",
                "name" : "origin/feat_qianggang_refactor_base"
              }
            ]
          },
          "revision" : {
            "SHA1" : "85b0e015f22a97ba8a1152c12fed667f3f594ac4",
            "branch" : [
              {
                "SHA1" : "85b0e015f22a97ba8a1152c12fed667f3f594ac4",
                "name" : "origin/feat_qianggang_refactor_base"
              }
            ]
          }
        },
        "origin/feat_align" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 424,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ebbef1a1b30c3bae3cbffdcfbdf64dc7fe22a736",
            "branch" : [
              {
                "SHA1" : "ebbef1a1b30c3bae3cbffdcfbdf64dc7fe22a736",
                "name" : "origin/feat_align"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ebbef1a1b30c3bae3cbffdcfbdf64dc7fe22a736",
            "branch" : [
              {
                "SHA1" : "ebbef1a1b30c3bae3cbffdcfbdf64dc7fe22a736",
                "name" : "origin/feat_align"
              }
            ]
          }
        },
        "origin/feat_below_plane_test" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 801,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5c08d2adecb053192a885f7a03148f9254fe0db9",
            "branch" : [
              {
                "SHA1" : "5c08d2adecb053192a885f7a03148f9254fe0db9",
                "name" : "origin/feat_below_plane_test"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5c08d2adecb053192a885f7a03148f9254fe0db9",
            "branch" : [
              {
                "SHA1" : "5c08d2adecb053192a885f7a03148f9254fe0db9",
                "name" : "origin/feat_below_plane_test"
              }
            ]
          }
        },
        "origin/feat_trajectory" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2011,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "779b6d5d34b3277c91752798ba87f7f422e9db60",
            "branch" : [
              {
                "SHA1" : "779b6d5d34b3277c91752798ba87f7f422e9db60",
                "name" : "origin/feat_trajectory"
              }
            ]
          },
          "revision" : {
            "SHA1" : "779b6d5d34b3277c91752798ba87f7f422e9db60",
            "branch" : [
              {
                "SHA1" : "779b6d5d34b3277c91752798ba87f7f422e9db60",
                "name" : "origin/feat_trajectory"
              }
            ]
          }
        },
        "origin/feat_below_plane" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 821,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "4b71eab7a509abe41326ffcf34f7fa8b9c6e5171",
            "branch" : [
              {
                "SHA1" : "4b71eab7a509abe41326ffcf34f7fa8b9c6e5171",
                "name" : "origin/feat_below_plane"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4b71eab7a509abe41326ffcf34f7fa8b9c6e5171",
            "branch" : [
              {
                "SHA1" : "4b71eab7a509abe41326ffcf34f7fa8b9c6e5171",
                "name" : "origin/feat_below_plane"
              }
            ]
          }
        },
        "origin/feat_ros2_raw" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2069,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d5c2906f9643bbd187a340e0c7d97ab36c06f008",
            "branch" : [
              {
                "SHA1" : "d5c2906f9643bbd187a340e0c7d97ab36c06f008",
                "name" : "origin/feat_ros2_raw"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d5c2906f9643bbd187a340e0c7d97ab36c06f008",
            "branch" : [
              {
                "SHA1" : "d5c2906f9643bbd187a340e0c7d97ab36c06f008",
                "name" : "origin/feat_ros2_raw"
              }
            ]
          }
        },
        "origin/feat_error_2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1702,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "dc5ce83a9372df1190690218ce64fd1058bcc3f3",
            "branch" : [
              {
                "SHA1" : "dc5ce83a9372df1190690218ce64fd1058bcc3f3",
                "name" : "origin/feat_error_2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "dc5ce83a9372df1190690218ce64fd1058bcc3f3",
            "branch" : [
              {
                "SHA1" : "dc5ce83a9372df1190690218ce64fd1058bcc3f3",
                "name" : "origin/feat_error_2"
              }
            ]
          }
        },
        "origin/feat_RVM_expanding" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 57,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6c5ba460a973c6efb925c1b8ac0c0c66ae67382d",
            "branch" : [
              {
                "SHA1" : "6c5ba460a973c6efb925c1b8ac0c0c66ae67382d",
                "name" : "origin/feat_RVM_expanding"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6c5ba460a973c6efb925c1b8ac0c0c66ae67382d",
            "branch" : [
              {
                "SHA1" : "6c5ba460a973c6efb925c1b8ac0c0c66ae67382d",
                "name" : "origin/feat_RVM_expanding"
              }
            ]
          }
        },
        "origin/feat_xilian" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1786,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d97fcd10176d05afcd939eb6c9b52410b911ec04",
            "branch" : [
              {
                "SHA1" : "d97fcd10176d05afcd939eb6c9b52410b911ec04",
                "name" : "origin/feat_xilian"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d97fcd10176d05afcd939eb6c9b52410b911ec04",
            "branch" : [
              {
                "SHA1" : "d97fcd10176d05afcd939eb6c9b52410b911ec04",
                "name" : "origin/feat_xilian"
              }
            ]
          }
        },
        "origin/feat_remote_open_space" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1223,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "890fc6e47593fa42eabdbfd10df1090d3e21670d",
            "branch" : [
              {
                "SHA1" : "890fc6e47593fa42eabdbfd10df1090d3e21670d",
                "name" : "origin/feat_remote_open_space"
              }
            ]
          },
          "revision" : {
            "SHA1" : "890fc6e47593fa42eabdbfd10df1090d3e21670d",
            "branch" : [
              {
                "SHA1" : "890fc6e47593fa42eabdbfd10df1090d3e21670d",
                "name" : "origin/feat_remote_open_space"
              }
            ]
          }
        },
        "origin/fix_creep" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 298,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "40037b22796a0a57a1a9532f8dee6f81a1dea48c",
            "branch" : [
              {
                "SHA1" : "40037b22796a0a57a1a9532f8dee6f81a1dea48c",
                "name" : "origin/fix_creep"
              }
            ]
          },
          "revision" : {
            "SHA1" : "40037b22796a0a57a1a9532f8dee6f81a1dea48c",
            "branch" : [
              {
                "SHA1" : "40037b22796a0a57a1a9532f8dee6f81a1dea48c",
                "name" : "origin/fix_creep"
              }
            ]
          }
        },
        "origin/devel_ex_obj" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 161,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "784da86120c574a6c6eadaf2a1363b0bdd7ddd85",
            "branch" : [
              {
                "SHA1" : "784da86120c574a6c6eadaf2a1363b0bdd7ddd85",
                "name" : "origin/devel_ex_obj"
              }
            ]
          },
          "revision" : {
            "SHA1" : "784da86120c574a6c6eadaf2a1363b0bdd7ddd85",
            "branch" : [
              {
                "SHA1" : "784da86120c574a6c6eadaf2a1363b0bdd7ddd85",
                "name" : "origin/devel_ex_obj"
              }
            ]
          }
        },
        "origin/feat_trajectory_daxie" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1726,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "97510c1a0394a537514724012f825fff6cf0f49e",
            "branch" : [
              {
                "SHA1" : "97510c1a0394a537514724012f825fff6cf0f49e",
                "name" : "origin/feat_trajectory_daxie"
              }
            ]
          },
          "revision" : {
            "SHA1" : "97510c1a0394a537514724012f825fff6cf0f49e",
            "branch" : [
              {
                "SHA1" : "97510c1a0394a537514724012f825fff6cf0f49e",
                "name" : "origin/feat_trajectory_daxie"
              }
            ]
          }
        },
        "origin/feat_wbca_qp_search" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 664,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a4f845451bbc421516777aa6574936377cfe8d52",
            "branch" : [
              {
                "SHA1" : "a4f845451bbc421516777aa6574936377cfe8d52",
                "name" : "origin/feat_wbca_qp_search"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a4f845451bbc421516777aa6574936377cfe8d52",
            "branch" : [
              {
                "SHA1" : "a4f845451bbc421516777aa6574936377cfe8d52",
                "name" : "origin/feat_wbca_qp_search"
              }
            ]
          }
        },
        "origin/feat_new_lka_v2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 798,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "72c21aeb73707ea3f17e9ad2a4180f5b6643bfdc",
            "branch" : [
              {
                "SHA1" : "72c21aeb73707ea3f17e9ad2a4180f5b6643bfdc",
                "name" : "origin/feat_new_lka_v2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "72c21aeb73707ea3f17e9ad2a4180f5b6643bfdc",
            "branch" : [
              {
                "SHA1" : "72c21aeb73707ea3f17e9ad2a4180f5b6643bfdc",
                "name" : "origin/feat_new_lka_v2"
              }
            ]
          }
        },
        "origin/feat_youyiguan" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1397,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "110f4bfd572e283acf213ad889de68e09a12e780",
            "branch" : [
              {
                "SHA1" : "110f4bfd572e283acf213ad889de68e09a12e780",
                "name" : "origin/feat_youyiguan"
              }
            ]
          },
          "revision" : {
            "SHA1" : "110f4bfd572e283acf213ad889de68e09a12e780",
            "branch" : [
              {
                "SHA1" : "110f4bfd572e283acf213ad889de68e09a12e780",
                "name" : "origin/feat_youyiguan"
              }
            ]
          }
        },
        "origin/feat_daxie_proto" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2175,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "cb853a183306ecdff3da4e1e3653dd405d06582a",
            "branch" : [
              {
                "SHA1" : "cb853a183306ecdff3da4e1e3653dd405d06582a",
                "name" : "origin/feat_daxie_proto"
              }
            ]
          },
          "revision" : {
            "SHA1" : "cb853a183306ecdff3da4e1e3653dd405d06582a",
            "branch" : [
              {
                "SHA1" : "cb853a183306ecdff3da4e1e3653dd405d06582a",
                "name" : "origin/feat_daxie_proto"
              }
            ]
          }
        },
        "origin/tmp_LD4_snapshot" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 124,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "726604b957bcad12703a6eee4ae7a0acbf96ae28",
            "branch" : [
              {
                "SHA1" : "726604b957bcad12703a6eee4ae7a0acbf96ae28",
                "name" : "origin/tmp_LD4_snapshot"
              }
            ]
          },
          "revision" : {
            "SHA1" : "726604b957bcad12703a6eee4ae7a0acbf96ae28",
            "branch" : [
              {
                "SHA1" : "726604b957bcad12703a6eee4ae7a0acbf96ae28",
                "name" : "origin/tmp_LD4_snapshot"
              }
            ]
          }
        },
        "origin/test_pedestrian_alarm" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1909,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "79cd4db36725f9448b1958bbd064348b81c5045b",
            "branch" : [
              {
                "SHA1" : "79cd4db36725f9448b1958bbd064348b81c5045b",
                "name" : "origin/test_pedestrian_alarm"
              }
            ]
          },
          "revision" : {
            "SHA1" : "79cd4db36725f9448b1958bbd064348b81c5045b",
            "branch" : [
              {
                "SHA1" : "79cd4db36725f9448b1958bbd064348b81c5045b",
                "name" : "origin/test_pedestrian_alarm"
              }
            ]
          }
        },
        "origin/feat_sq_LD" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1450,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f5b7dfe8a9ee3b369eca07ed87fafb8f866ec2a4",
            "branch" : [
              {
                "SHA1" : "f5b7dfe8a9ee3b369eca07ed87fafb8f866ec2a4",
                "name" : "origin/feat_sq_LD"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f5b7dfe8a9ee3b369eca07ed87fafb8f866ec2a4",
            "branch" : [
              {
                "SHA1" : "f5b7dfe8a9ee3b369eca07ed87fafb8f866ec2a4",
                "name" : "origin/feat_sq_LD"
              }
            ]
          }
        },
        "origin/feat_sidepass_decider" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2092,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5e850185f8ec461f7475603e6a0859aeb500a014",
            "branch" : [
              {
                "SHA1" : "5e850185f8ec461f7475603e6a0859aeb500a014",
                "name" : "origin/feat_sidepass_decider"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5e850185f8ec461f7475603e6a0859aeb500a014",
            "branch" : [
              {
                "SHA1" : "5e850185f8ec461f7475603e6a0859aeb500a014",
                "name" : "origin/feat_sidepass_decider"
              }
            ]
          }
        },
        "origin/feat_block" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 331,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2bd196c123c11d415e32023df4f795f28a62e2db",
            "branch" : [
              {
                "SHA1" : "2bd196c123c11d415e32023df4f795f28a62e2db",
                "name" : "origin/feat_block"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2bd196c123c11d415e32023df4f795f28a62e2db",
            "branch" : [
              {
                "SHA1" : "2bd196c123c11d415e32023df4f795f28a62e2db",
                "name" : "origin/feat_block"
              }
            ]
          }
        },
        "origin/feat_bend_decider" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 150,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a723f7f5bcc15bc8b355c7460f5023308b438b98",
            "branch" : [
              {
                "SHA1" : "a723f7f5bcc15bc8b355c7460f5023308b438b98",
                "name" : "origin/feat_bend_decider"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a723f7f5bcc15bc8b355c7460f5023308b438b98",
            "branch" : [
              {
                "SHA1" : "a723f7f5bcc15bc8b355c7460f5023308b438b98",
                "name" : "origin/feat_bend_decider"
              }
            ]
          }
        },
        "origin/feat_lattice_ref_speed" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1977,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bf1d65551bf9244e374ab05672fb4a86190c2958",
            "branch" : [
              {
                "SHA1" : "bf1d65551bf9244e374ab05672fb4a86190c2958",
                "name" : "origin/feat_lattice_ref_speed"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bf1d65551bf9244e374ab05672fb4a86190c2958",
            "branch" : [
              {
                "SHA1" : "bf1d65551bf9244e374ab05672fb4a86190c2958",
                "name" : "origin/feat_lattice_ref_speed"
              }
            ]
          }
        },
        "origin/feat_wbca" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 826,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "54df14224af0595694e9cbb8bf44e084f28e8a3f",
            "branch" : [
              {
                "SHA1" : "54df14224af0595694e9cbb8bf44e084f28e8a3f",
                "name" : "origin/feat_wbca"
              }
            ]
          },
          "revision" : {
            "SHA1" : "54df14224af0595694e9cbb8bf44e084f28e8a3f",
            "branch" : [
              {
                "SHA1" : "54df14224af0595694e9cbb8bf44e084f28e8a3f",
                "name" : "origin/feat_wbca"
              }
            ]
          }
        },
        "origin/feat_qg_speed_up" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1253,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b0b5b8e15daf690eea56c5e9ca9ffcbf663c5868",
            "branch" : [
              {
                "SHA1" : "b0b5b8e15daf690eea56c5e9ca9ffcbf663c5868",
                "name" : "origin/feat_qg_speed_up"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b0b5b8e15daf690eea56c5e9ca9ffcbf663c5868",
            "branch" : [
              {
                "SHA1" : "b0b5b8e15daf690eea56c5e9ca9ffcbf663c5868",
                "name" : "origin/feat_qg_speed_up"
              }
            ]
          }
        },
        "origin/feat_hfsm_direction" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 126,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b868d7ee8d7704e71abb1bdcb62055b3c100abca",
            "branch" : [
              {
                "SHA1" : "b868d7ee8d7704e71abb1bdcb62055b3c100abca",
                "name" : "origin/feat_hfsm_direction"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b868d7ee8d7704e71abb1bdcb62055b3c100abca",
            "branch" : [
              {
                "SHA1" : "b868d7ee8d7704e71abb1bdcb62055b3c100abca",
                "name" : "origin/feat_hfsm_direction"
              }
            ]
          }
        },
        "origin/feat_trajectory_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1832,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3c014a88a977f1fa72e9a25de08998423c6d4633",
            "branch" : [
              {
                "SHA1" : "3c014a88a977f1fa72e9a25de08998423c6d4633",
                "name" : "origin/feat_trajectory_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3c014a88a977f1fa72e9a25de08998423c6d4633",
            "branch" : [
              {
                "SHA1" : "3c014a88a977f1fa72e9a25de08998423c6d4633",
                "name" : "origin/feat_trajectory_qiangang"
              }
            ]
          }
        },
        "origin/fix_action_type" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 260,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2a0f28492aeed5bc862a8d6f6c02f7b07e5d4248",
            "branch" : [
              {
                "SHA1" : "2a0f28492aeed5bc862a8d6f6c02f7b07e5d4248",
                "name" : "origin/fix_action_type"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2a0f28492aeed5bc862a8d6f6c02f7b07e5d4248",
            "branch" : [
              {
                "SHA1" : "2a0f28492aeed5bc862a8d6f6c02f7b07e5d4248",
                "name" : "origin/fix_action_type"
              }
            ]
          }
        },
        "origin/feat_ssep_imv_enter_station" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1122,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2282c6f06407cbfb5d8ef37f429013e6637ef2d4",
            "branch" : [
              {
                "SHA1" : "2282c6f06407cbfb5d8ef37f429013e6637ef2d4",
                "name" : "origin/feat_ssep_imv_enter_station"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2282c6f06407cbfb5d8ef37f429013e6637ef2d4",
            "branch" : [
              {
                "SHA1" : "2282c6f06407cbfb5d8ef37f429013e6637ef2d4",
                "name" : "origin/feat_ssep_imv_enter_station"
              }
            ]
          }
        },
        "origin/feat_boundary_type" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 326,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1a4a5729ae509db04578d9bae14c96c86988bd04",
            "branch" : [
              {
                "SHA1" : "1a4a5729ae509db04578d9bae14c96c86988bd04",
                "name" : "origin/feat_boundary_type"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1a4a5729ae509db04578d9bae14c96c86988bd04",
            "branch" : [
              {
                "SHA1" : "1a4a5729ae509db04578d9bae14c96c86988bd04",
                "name" : "origin/feat_boundary_type"
              }
            ]
          }
        },
        "origin/feat_wbca_truck_dp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 594,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2a2a8d71f190459fe1ad30bef5c2cce424ed05b6",
            "branch" : [
              {
                "SHA1" : "2a2a8d71f190459fe1ad30bef5c2cce424ed05b6",
                "name" : "origin/feat_wbca_truck_dp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2a2a8d71f190459fe1ad30bef5c2cce424ed05b6",
            "branch" : [
              {
                "SHA1" : "2a2a8d71f190459fe1ad30bef5c2cce424ed05b6",
                "name" : "origin/feat_wbca_truck_dp"
              }
            ]
          }
        },
        "origin/feat_taiyang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1771,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2481bf3bbb2d9ac0e03d6e3360bf006b8eee72c5",
            "branch" : [
              {
                "SHA1" : "2481bf3bbb2d9ac0e03d6e3360bf006b8eee72c5",
                "name" : "origin/feat_taiyang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2481bf3bbb2d9ac0e03d6e3360bf006b8eee72c5",
            "branch" : [
              {
                "SHA1" : "2481bf3bbb2d9ac0e03d6e3360bf006b8eee72c5",
                "name" : "origin/feat_taiyang"
              }
            ]
          }
        },
        "origin/feat_clear_area" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1561,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ec60685af092a1b9c7e92fccd81fa260c92c5fa3",
            "branch" : [
              {
                "SHA1" : "ec60685af092a1b9c7e92fccd81fa260c92c5fa3",
                "name" : "origin/feat_clear_area"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ec60685af092a1b9c7e92fccd81fa260c92c5fa3",
            "branch" : [
              {
                "SHA1" : "ec60685af092a1b9c7e92fccd81fa260c92c5fa3",
                "name" : "origin/feat_clear_area"
              }
            ]
          }
        },
        "origin/feat_block_data" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1258,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e4b53590f63add07d6ac719a8faa70eafb610f6c",
            "branch" : [
              {
                "SHA1" : "e4b53590f63add07d6ac719a8faa70eafb610f6c",
                "name" : "origin/feat_block_data"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e4b53590f63add07d6ac719a8faa70eafb610f6c",
            "branch" : [
              {
                "SHA1" : "e4b53590f63add07d6ac719a8faa70eafb610f6c",
                "name" : "origin/feat_block_data"
              }
            ]
          }
        },
        "origin/feat_hairun" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1962,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d72976ffcf1198dc889eebc4158ede7ff7a4b7e3",
            "branch" : [
              {
                "SHA1" : "d72976ffcf1198dc889eebc4158ede7ff7a4b7e3",
                "name" : "origin/feat_hairun"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d72976ffcf1198dc889eebc4158ede7ff7a4b7e3",
            "branch" : [
              {
                "SHA1" : "d72976ffcf1198dc889eebc4158ede7ff7a4b7e3",
                "name" : "origin/feat_hairun"
              }
            ]
          }
        },
        "origin/feat_dynamic_hd_map" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 382,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d979069f193b3278b4bf5456cb737987424a7075",
            "branch" : [
              {
                "SHA1" : "d979069f193b3278b4bf5456cb737987424a7075",
                "name" : "origin/feat_dynamic_hd_map"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d979069f193b3278b4bf5456cb737987424a7075",
            "branch" : [
              {
                "SHA1" : "d979069f193b3278b4bf5456cb737987424a7075",
                "name" : "origin/feat_dynamic_hd_map"
              }
            ]
          }
        },
        "origin/feat_qiangang" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1756,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "aecf87a4b918714c30dc044500750f6fa06503db",
            "branch" : [
              {
                "SHA1" : "aecf87a4b918714c30dc044500750f6fa06503db",
                "name" : "origin/feat_qiangang"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aecf87a4b918714c30dc044500750f6fa06503db",
            "branch" : [
              {
                "SHA1" : "aecf87a4b918714c30dc044500750f6fa06503db",
                "name" : "origin/feat_qiangang"
              }
            ]
          }
        },
        "origin/feat_straddle_v2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1951,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "aa5f11053bb9e7f5934ae5fc73f0c52f703b4583",
            "branch" : [
              {
                "SHA1" : "aa5f11053bb9e7f5934ae5fc73f0c52f703b4583",
                "name" : "origin/feat_straddle_v2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aa5f11053bb9e7f5934ae5fc73f0c52f703b4583",
            "branch" : [
              {
                "SHA1" : "aa5f11053bb9e7f5934ae5fc73f0c52f703b4583",
                "name" : "origin/feat_straddle_v2"
              }
            ]
          }
        },
        "refs/remotes/origin/tangwenqing/ssep-improve-latency" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 738,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "520fbf85a0b49395abf72d0cbe1c7457c23e0743",
            "branch" : [
              {
                "SHA1" : "520fbf85a0b49395abf72d0cbe1c7457c23e0743",
                "name" : "refs/remotes/origin/tangwenqing/ssep-improve-latency"
              }
            ]
          },
          "revision" : {
            "SHA1" : "520fbf85a0b49395abf72d0cbe1c7457c23e0743",
            "branch" : [
              {
                "SHA1" : "520fbf85a0b49395abf72d0cbe1c7457c23e0743",
                "name" : "refs/remotes/origin/tangwenqing/ssep-improve-latency"
              }
            ]
          }
        },
        "origin/feat_traffic" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1348,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "65d8f7ddfa0eeffffdbfc3fd27e9651adf92796c",
            "branch" : [
              {
                "SHA1" : "65d8f7ddfa0eeffffdbfc3fd27e9651adf92796c",
                "name" : "origin/feat_traffic"
              }
            ]
          },
          "revision" : {
            "SHA1" : "65d8f7ddfa0eeffffdbfc3fd27e9651adf92796c",
            "branch" : [
              {
                "SHA1" : "65d8f7ddfa0eeffffdbfc3fd27e9651adf92796c",
                "name" : "origin/feat_traffic"
              }
            ]
          }
        },
        "origin/fix_deadlock_restart" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1925,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "587046e144b1050a05158d807de24b47911d0e60",
            "branch" : [
              {
                "SHA1" : "587046e144b1050a05158d807de24b47911d0e60",
                "name" : "origin/fix_deadlock_restart"
              }
            ]
          },
          "revision" : {
            "SHA1" : "587046e144b1050a05158d807de24b47911d0e60",
            "branch" : [
              {
                "SHA1" : "587046e144b1050a05158d807de24b47911d0e60",
                "name" : "origin/fix_deadlock_restart"
              }
            ]
          }
        },
        "origin/feat_truck_bulk" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 667,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e6f4362ba18bbaa85f57f5aa474137f7dc879165",
            "branch" : [
              {
                "SHA1" : "e6f4362ba18bbaa85f57f5aa474137f7dc879165",
                "name" : "origin/feat_truck_bulk"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e6f4362ba18bbaa85f57f5aa474137f7dc879165",
            "branch" : [
              {
                "SHA1" : "e6f4362ba18bbaa85f57f5aa474137f7dc879165",
                "name" : "origin/feat_truck_bulk"
              }
            ]
          }
        },
        "origin/feat_qiangang_refactor" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1369,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "34ae0342b5807fc123efc3c6f60c40051b4c790b",
            "branch" : [
              {
                "SHA1" : "34ae0342b5807fc123efc3c6f60c40051b4c790b",
                "name" : "origin/feat_qiangang_refactor"
              }
            ]
          },
          "revision" : {
            "SHA1" : "34ae0342b5807fc123efc3c6f60c40051b4c790b",
            "branch" : [
              {
                "SHA1" : "34ae0342b5807fc123efc3c6f60c40051b4c790b",
                "name" : "origin/feat_qiangang_refactor"
              }
            ]
          }
        },
        "origin/feat_sq_LD_test" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1514,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6255cb9d52b61dded26f200866c3300e49fd5424",
            "branch" : [
              {
                "SHA1" : "6255cb9d52b61dded26f200866c3300e49fd5424",
                "name" : "origin/feat_sq_LD_test"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6255cb9d52b61dded26f200866c3300e49fd5424",
            "branch" : [
              {
                "SHA1" : "6255cb9d52b61dded26f200866c3300e49fd5424",
                "name" : "origin/feat_sq_LD_test"
              }
            ]
          }
        },
        "origin/feat_guide_line_lane_change" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 747,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "06bac4dbce1e7b82a7efc46cc23444dd23328d1d",
            "branch" : [
              {
                "SHA1" : "06bac4dbce1e7b82a7efc46cc23444dd23328d1d",
                "name" : "origin/feat_guide_line_lane_change"
              }
            ]
          },
          "revision" : {
            "SHA1" : "06bac4dbce1e7b82a7efc46cc23444dd23328d1d",
            "branch" : [
              {
                "SHA1" : "06bac4dbce1e7b82a7efc46cc23444dd23328d1d",
                "name" : "origin/feat_guide_line_lane_change"
              }
            ]
          }
        },
        "origin/feat_wh_trailer" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2061,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "84f69b576855adcc7054f1dbe0b4cb63279f60c6",
            "branch" : [
              {
                "SHA1" : "84f69b576855adcc7054f1dbe0b4cb63279f60c6",
                "name" : "origin/feat_wh_trailer"
              }
            ]
          },
          "revision" : {
            "SHA1" : "84f69b576855adcc7054f1dbe0b4cb63279f60c6",
            "branch" : [
              {
                "SHA1" : "84f69b576855adcc7054f1dbe0b4cb63279f60c6",
                "name" : "origin/feat_wh_trailer"
              }
            ]
          }
        },
        "origin/feat_trajectory_weihai" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1882,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0be2c6867114557a6eacfb0078192153c83c83a5",
            "branch" : [
              {
                "SHA1" : "0be2c6867114557a6eacfb0078192153c83c83a5",
                "name" : "origin/feat_trajectory_weihai"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0be2c6867114557a6eacfb0078192153c83c83a5",
            "branch" : [
              {
                "SHA1" : "0be2c6867114557a6eacfb0078192153c83c83a5",
                "name" : "origin/feat_trajectory_weihai"
              }
            ]
          }
        },
        "origin/feat_proto_jinxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2139,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
            "branch" : [
              {
                "SHA1" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
                "name" : "origin/feat_proto_jinxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
            "branch" : [
              {
                "SHA1" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
                "name" : "origin/feat_proto_jinxi"
              }
            ]
          }
        },
        "origin/feat_weifang_aacreep" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2171,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "9765986feb718c3dbdb57379e8120a4b455aae4d",
            "branch" : [
              {
                "SHA1" : "9765986feb718c3dbdb57379e8120a4b455aae4d",
                "name" : "origin/feat_weifang_aacreep"
              }
            ]
          },
          "revision" : {
            "SHA1" : "9765986feb718c3dbdb57379e8120a4b455aae4d",
            "branch" : [
              {
                "SHA1" : "9765986feb718c3dbdb57379e8120a4b455aae4d",
                "name" : "origin/feat_weifang_aacreep"
              }
            ]
          }
        },
        "origin/feat_ros2_platoon_mpc" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2084,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0d27b36cc302441a7459936d3fbfd470973ec750",
            "branch" : [
              {
                "SHA1" : "0d27b36cc302441a7459936d3fbfd470973ec750",
                "name" : "origin/feat_ros2_platoon_mpc"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0d27b36cc302441a7459936d3fbfd470973ec750",
            "branch" : [
              {
                "SHA1" : "0d27b36cc302441a7459936d3fbfd470973ec750",
                "name" : "origin/feat_ros2_platoon_mpc"
              }
            ]
          }
        },
        "origin/feat_seg_search" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 982,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "468bc74cb13dfad5a2e4aba6998983e2b3a9c202",
            "branch" : [
              {
                "SHA1" : "468bc74cb13dfad5a2e4aba6998983e2b3a9c202",
                "name" : "origin/feat_seg_search"
              }
            ]
          },
          "revision" : {
            "SHA1" : "468bc74cb13dfad5a2e4aba6998983e2b3a9c202",
            "branch" : [
              {
                "SHA1" : "468bc74cb13dfad5a2e4aba6998983e2b3a9c202",
                "name" : "origin/feat_seg_search"
              }
            ]
          }
        },
        "origin/feat_proto_jinxi_2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2150,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6efb8024714d3063693e857288df97d676d9991b",
            "branch" : [
              {
                "SHA1" : "6efb8024714d3063693e857288df97d676d9991b",
                "name" : "origin/feat_proto_jinxi_2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6efb8024714d3063693e857288df97d676d9991b",
            "branch" : [
              {
                "SHA1" : "6efb8024714d3063693e857288df97d676d9991b",
                "name" : "origin/feat_proto_jinxi_2"
              }
            ]
          }
        },
        "origin/feat_wbca_backup" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 480,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f479f95d1e31bfc01963fe22cb3ab6efcc3b23d1",
            "branch" : [
              {
                "SHA1" : "f479f95d1e31bfc01963fe22cb3ab6efcc3b23d1",
                "name" : "origin/feat_wbca_backup"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f479f95d1e31bfc01963fe22cb3ab6efcc3b23d1",
            "branch" : [
              {
                "SHA1" : "f479f95d1e31bfc01963fe22cb3ab6efcc3b23d1",
                "name" : "origin/feat_wbca_backup"
              }
            ]
          }
        },
        "origin/feat_sc_v2_old" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1694,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "39340b8d50e9c4bfa92967b6eea2d93ef9b617ad",
            "branch" : [
              {
                "SHA1" : "39340b8d50e9c4bfa92967b6eea2d93ef9b617ad",
                "name" : "origin/feat_sc_v2_old"
              }
            ]
          },
          "revision" : {
            "SHA1" : "39340b8d50e9c4bfa92967b6eea2d93ef9b617ad",
            "branch" : [
              {
                "SHA1" : "39340b8d50e9c4bfa92967b6eea2d93ef9b617ad",
                "name" : "origin/feat_sc_v2_old"
              }
            ]
          }
        },
        "origin/feat_trajectory_hairun" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1883,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "335cb0c3d0d91a66a22e0ac78648d592ecc58b56",
            "branch" : [
              {
                "SHA1" : "335cb0c3d0d91a66a22e0ac78648d592ecc58b56",
                "name" : "origin/feat_trajectory_hairun"
              }
            ]
          },
          "revision" : {
            "SHA1" : "335cb0c3d0d91a66a22e0ac78648d592ecc58b56",
            "branch" : [
              {
                "SHA1" : "335cb0c3d0d91a66a22e0ac78648d592ecc58b56",
                "name" : "origin/feat_trajectory_hairun"
              }
            ]
          }
        },
        "origin/feat-hdmap" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 363,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "211888f1f4e81f87514411e3bd1e3dc23a4ae046",
            "branch" : [
              {
                "SHA1" : "211888f1f4e81f87514411e3bd1e3dc23a4ae046",
                "name" : "origin/feat-hdmap"
              }
            ]
          },
          "revision" : {
            "SHA1" : "211888f1f4e81f87514411e3bd1e3dc23a4ae046",
            "branch" : [
              {
                "SHA1" : "211888f1f4e81f87514411e3bd1e3dc23a4ae046",
                "name" : "origin/feat-hdmap"
              }
            ]
          }
        },
        "origin/feat_keb_path_opt_task" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1572,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "03b3cf39f7b16511a2dbe122e5ad34392670a516",
            "branch" : [
              {
                "SHA1" : "03b3cf39f7b16511a2dbe122e5ad34392670a516",
                "name" : "origin/feat_keb_path_opt_task"
              }
            ]
          },
          "revision" : {
            "SHA1" : "03b3cf39f7b16511a2dbe122e5ad34392670a516",
            "branch" : [
              {
                "SHA1" : "03b3cf39f7b16511a2dbe122e5ad34392670a516",
                "name" : "origin/feat_keb_path_opt_task"
              }
            ]
          }
        },
        "origin/rc_dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1267,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1f83b21901518f710c4d73ce9d08d6571ce026d0",
            "branch" : [
              {
                "SHA1" : "1f83b21901518f710c4d73ce9d08d6571ce026d0",
                "name" : "origin/rc_dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1f83b21901518f710c4d73ce9d08d6571ce026d0",
            "branch" : [
              {
                "SHA1" : "1f83b21901518f710c4d73ce9d08d6571ce026d0",
                "name" : "origin/rc_dev"
              }
            ]
          }
        },
        "origin/tmp_djk_ssep" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 447,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f03ed133cbf84976d6cf099761bf25345c7e8945",
            "branch" : [
              {
                "SHA1" : "f03ed133cbf84976d6cf099761bf25345c7e8945",
                "name" : "origin/tmp_djk_ssep"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f03ed133cbf84976d6cf099761bf25345c7e8945",
            "branch" : [
              {
                "SHA1" : "f03ed133cbf84976d6cf099761bf25345c7e8945",
                "name" : "origin/tmp_djk_ssep"
              }
            ]
          }
        },
        "origin/feat_wbca_truck_dp_dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 766,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fbcec908efd6c586d1a9ac07492d1916c2761543",
            "branch" : [
              {
                "SHA1" : "fbcec908efd6c586d1a9ac07492d1916c2761543",
                "name" : "origin/feat_wbca_truck_dp_dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fbcec908efd6c586d1a9ac07492d1916c2761543",
            "branch" : [
              {
                "SHA1" : "fbcec908efd6c586d1a9ac07492d1916c2761543",
                "name" : "origin/feat_wbca_truck_dp_dev"
              }
            ]
          }
        },
        "origin/test_hr" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 787,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1e10c9b364546121e29573c0300e3c48b67611a4",
            "branch" : [
              {
                "SHA1" : "1e10c9b364546121e29573c0300e3c48b67611a4",
                "name" : "origin/test_hr"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1e10c9b364546121e29573c0300e3c48b67611a4",
            "branch" : [
              {
                "SHA1" : "1e10c9b364546121e29573c0300e3c48b67611a4",
                "name" : "origin/test_hr"
              }
            ]
          }
        },
        "origin/feat_side_pass" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 483,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b20d7c381eeb7f624660868c8ef35a9e5c80b0b7",
            "branch" : [
              {
                "SHA1" : "b20d7c381eeb7f624660868c8ef35a9e5c80b0b7",
                "name" : "origin/feat_side_pass"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b20d7c381eeb7f624660868c8ef35a9e5c80b0b7",
            "branch" : [
              {
                "SHA1" : "b20d7c381eeb7f624660868c8ef35a9e5c80b0b7",
                "name" : "origin/feat_side_pass"
              }
            ]
          }
        },
        "origin/ssep-improve-latency" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 779,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "efaa88b8102251d8b12cc172176c6965ba05c41f",
            "branch" : [
              {
                "SHA1" : "efaa88b8102251d8b12cc172176c6965ba05c41f",
                "name" : "origin/ssep-improve-latency"
              }
            ]
          },
          "revision" : {
            "SHA1" : "efaa88b8102251d8b12cc172176c6965ba05c41f",
            "branch" : [
              {
                "SHA1" : "efaa88b8102251d8b12cc172176c6965ba05c41f",
                "name" : "origin/ssep-improve-latency"
              }
            ]
          }
        },
        "origin/feat_LS_deviation" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 910,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "561b9666baea1c45219fec16ec74d0d0c62bd819",
            "branch" : [
              {
                "SHA1" : "561b9666baea1c45219fec16ec74d0d0c62bd819",
                "name" : "origin/feat_LS_deviation"
              }
            ]
          },
          "revision" : {
            "SHA1" : "561b9666baea1c45219fec16ec74d0d0c62bd819",
            "branch" : [
              {
                "SHA1" : "561b9666baea1c45219fec16ec74d0d0c62bd819",
                "name" : "origin/feat_LS_deviation"
              }
            ]
          }
        },
        "origin/feat_wbca_truck" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 515,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "aba8c06c86955a34d5d6debb8e114385f0259633",
            "branch" : [
              {
                "SHA1" : "aba8c06c86955a34d5d6debb8e114385f0259633",
                "name" : "origin/feat_wbca_truck"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aba8c06c86955a34d5d6debb8e114385f0259633",
            "branch" : [
              {
                "SHA1" : "aba8c06c86955a34d5d6debb8e114385f0259633",
                "name" : "origin/feat_wbca_truck"
              }
            ]
          }
        },
        "origin/feat_imv_pull_over" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1266,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "47dd1e17e3b7a1cacfa8af95d3a50e451c387dc1",
            "branch" : [
              {
                "SHA1" : "47dd1e17e3b7a1cacfa8af95d3a50e451c387dc1",
                "name" : "origin/feat_imv_pull_over"
              }
            ]
          },
          "revision" : {
            "SHA1" : "47dd1e17e3b7a1cacfa8af95d3a50e451c387dc1",
            "branch" : [
              {
                "SHA1" : "47dd1e17e3b7a1cacfa8af95d3a50e451c387dc1",
                "name" : "origin/feat_imv_pull_over"
              }
            ]
          }
        },
        "origin/feat_sqjb" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1119,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3527a793f3ade81518ceb5c982fa3e1c89b02711",
            "branch" : [
              {
                "SHA1" : "3527a793f3ade81518ceb5c982fa3e1c89b02711",
                "name" : "origin/feat_sqjb"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3527a793f3ade81518ceb5c982fa3e1c89b02711",
            "branch" : [
              {
                "SHA1" : "3527a793f3ade81518ceb5c982fa3e1c89b02711",
                "name" : "origin/feat_sqjb"
              }
            ]
          }
        },
        "origin/feat_qiangang_ssep_heatnet" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1284,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "043c59ce1faa06b6a3ab6e6ea7887783b567751e",
            "branch" : [
              {
                "SHA1" : "043c59ce1faa06b6a3ab6e6ea7887783b567751e",
                "name" : "origin/feat_qiangang_ssep_heatnet"
              }
            ]
          },
          "revision" : {
            "SHA1" : "043c59ce1faa06b6a3ab6e6ea7887783b567751e",
            "branch" : [
              {
                "SHA1" : "043c59ce1faa06b6a3ab6e6ea7887783b567751e",
                "name" : "origin/feat_qiangang_ssep_heatnet"
              }
            ]
          }
        },
        "origin/rebase_jinxi2_keb_html" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2166,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "39f8e722a5af1d53d54bdf136357b3235457c2a4",
            "branch" : [
              {
                "SHA1" : "39f8e722a5af1d53d54bdf136357b3235457c2a4",
                "name" : "origin/rebase_jinxi2_keb_html"
              }
            ]
          },
          "revision" : {
            "SHA1" : "39f8e722a5af1d53d54bdf136357b3235457c2a4",
            "branch" : [
              {
                "SHA1" : "39f8e722a5af1d53d54bdf136357b3235457c2a4",
                "name" : "origin/rebase_jinxi2_keb_html"
              }
            ]
          }
        },
        "origin/feat_truck_reverse" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 853,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2527849cf681e0804ef5561c1b564dd434a5fe20",
            "branch" : [
              {
                "SHA1" : "2527849cf681e0804ef5561c1b564dd434a5fe20",
                "name" : "origin/feat_truck_reverse"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2527849cf681e0804ef5561c1b564dd434a5fe20",
            "branch" : [
              {
                "SHA1" : "2527849cf681e0804ef5561c1b564dd434a5fe20",
                "name" : "origin/feat_truck_reverse"
              }
            ]
          }
        },
        "origin/feat_sink_snapshot" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 270,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "396ad3472e9618a78105fe71a4271cbec91ddd2f",
            "branch" : [
              {
                "SHA1" : "396ad3472e9618a78105fe71a4271cbec91ddd2f",
                "name" : "origin/feat_sink_snapshot"
              }
            ]
          },
          "revision" : {
            "SHA1" : "396ad3472e9618a78105fe71a4271cbec91ddd2f",
            "branch" : [
              {
                "SHA1" : "396ad3472e9618a78105fe71a4271cbec91ddd2f",
                "name" : "origin/feat_sink_snapshot"
              }
            ]
          }
        },
        "origin/feat_stacker" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 488,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f93b3e4bf900c1582854ede8fb00b1d43f66cf12",
            "branch" : [
              {
                "SHA1" : "f93b3e4bf900c1582854ede8fb00b1d43f66cf12",
                "name" : "origin/feat_stacker"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f93b3e4bf900c1582854ede8fb00b1d43f66cf12",
            "branch" : [
              {
                "SHA1" : "f93b3e4bf900c1582854ede8fb00b1d43f66cf12",
                "name" : "origin/feat_stacker"
              }
            ]
          }
        },
        "origin/feat_daxie" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1643,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "730037190ab095ff3004718347429c4e827549c3",
            "branch" : [
              {
                "SHA1" : "730037190ab095ff3004718347429c4e827549c3",
                "name" : "origin/feat_daxie"
              }
            ]
          },
          "revision" : {
            "SHA1" : "730037190ab095ff3004718347429c4e827549c3",
            "branch" : [
              {
                "SHA1" : "730037190ab095ff3004718347429c4e827549c3",
                "name" : "origin/feat_daxie"
              }
            ]
          }
        },
        "origin/feat_change_1" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 306,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2b9b5a487bfbd20ca64e0ba010e5657d4ab2bbef",
            "branch" : [
              {
                "SHA1" : "2b9b5a487bfbd20ca64e0ba010e5657d4ab2bbef",
                "name" : "origin/feat_change_1"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2b9b5a487bfbd20ca64e0ba010e5657d4ab2bbef",
            "branch" : [
              {
                "SHA1" : "2b9b5a487bfbd20ca64e0ba010e5657d4ab2bbef",
                "name" : "origin/feat_change_1"
              }
            ]
          }
        },
        "origin/feat_yangpu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1727,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1b8232a1c296987edf855d048e610da85a01131e",
            "branch" : [
              {
                "SHA1" : "1b8232a1c296987edf855d048e610da85a01131e",
                "name" : "origin/feat_yangpu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1b8232a1c296987edf855d048e610da85a01131e",
            "branch" : [
              {
                "SHA1" : "1b8232a1c296987edf855d048e610da85a01131e",
                "name" : "origin/feat_yangpu"
              }
            ]
          }
        },
        "origin/feat_block_data_switch" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 980,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "671f8b9fb2418043687a2820a1a575a98cf71312",
            "branch" : [
              {
                "SHA1" : "671f8b9fb2418043687a2820a1a575a98cf71312",
                "name" : "origin/feat_block_data_switch"
              }
            ]
          },
          "revision" : {
            "SHA1" : "671f8b9fb2418043687a2820a1a575a98cf71312",
            "branch" : [
              {
                "SHA1" : "671f8b9fb2418043687a2820a1a575a98cf71312",
                "name" : "origin/feat_block_data_switch"
              }
            ]
          }
        },
        "origin/ssep-geometric-searcher-test" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 894,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a3962d2cff5ec8603a3373cd7ac2c8ac6e52196c",
            "branch" : [
              {
                "SHA1" : "a3962d2cff5ec8603a3373cd7ac2c8ac6e52196c",
                "name" : "origin/ssep-geometric-searcher-test"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a3962d2cff5ec8603a3373cd7ac2c8ac6e52196c",
            "branch" : [
              {
                "SHA1" : "a3962d2cff5ec8603a3373cd7ac2c8ac6e52196c",
                "name" : "origin/ssep-geometric-searcher-test"
              }
            ]
          }
        },
        "origin/feat_sidepass_lattice" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2095,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7b28a9cf19d4fe474fff3e76fed2eb528b46681d",
            "branch" : [
              {
                "SHA1" : "7b28a9cf19d4fe474fff3e76fed2eb528b46681d",
                "name" : "origin/feat_sidepass_lattice"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7b28a9cf19d4fe474fff3e76fed2eb528b46681d",
            "branch" : [
              {
                "SHA1" : "7b28a9cf19d4fe474fff3e76fed2eb528b46681d",
                "name" : "origin/feat_sidepass_lattice"
              }
            ]
          }
        },
        "origin/feat_yard_name" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1072,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fb3eb46878509f760b66cb36617be19d9d610c79",
            "branch" : [
              {
                "SHA1" : "fb3eb46878509f760b66cb36617be19d9d610c79",
                "name" : "origin/feat_yard_name"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fb3eb46878509f760b66cb36617be19d9d610c79",
            "branch" : [
              {
                "SHA1" : "fb3eb46878509f760b66cb36617be19d9d610c79",
                "name" : "origin/feat_yard_name"
              }
            ]
          }
        },
        "origin/tmp_lon_decision_4" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 96,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "71e064bede15f180450ac4b5db9d91c14b212d4c",
            "branch" : [
              {
                "SHA1" : "71e064bede15f180450ac4b5db9d91c14b212d4c",
                "name" : "origin/tmp_lon_decision_4"
              }
            ]
          },
          "revision" : {
            "SHA1" : "71e064bede15f180450ac4b5db9d91c14b212d4c",
            "branch" : [
              {
                "SHA1" : "71e064bede15f180450ac4b5db9d91c14b212d4c",
                "name" : "origin/tmp_lon_decision_4"
              }
            ]
          }
        },
        "origin/tmp_lon_decision_3" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 70,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3369d60699427ed500ebc0fe4212e0198acbcfa3",
            "branch" : [
              {
                "SHA1" : "3369d60699427ed500ebc0fe4212e0198acbcfa3",
                "name" : "origin/tmp_lon_decision_3"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3369d60699427ed500ebc0fe4212e0198acbcfa3",
            "branch" : [
              {
                "SHA1" : "3369d60699427ed500ebc0fe4212e0198acbcfa3",
                "name" : "origin/tmp_lon_decision_3"
              }
            ]
          }
        },
        "origin/test_lon_decision" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 688,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d975905da5fa9e032aca5e5548151f50dca472f5",
            "branch" : [
              {
                "SHA1" : "d975905da5fa9e032aca5e5548151f50dca472f5",
                "name" : "origin/test_lon_decision"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d975905da5fa9e032aca5e5548151f50dca472f5",
            "branch" : [
              {
                "SHA1" : "d975905da5fa9e032aca5e5548151f50dca472f5",
                "name" : "origin/test_lon_decision"
              }
            ]
          }
        },
        "origin/feat_baoshishun" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1763,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bd980a9f7945cff4fe8ab5e4c52a872b9928a648",
            "branch" : [
              {
                "SHA1" : "bd980a9f7945cff4fe8ab5e4c52a872b9928a648",
                "name" : "origin/feat_baoshishun"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bd980a9f7945cff4fe8ab5e4c52a872b9928a648",
            "branch" : [
              {
                "SHA1" : "bd980a9f7945cff4fe8ab5e4c52a872b9928a648",
                "name" : "origin/feat_baoshishun"
              }
            ]
          }
        },
        "origin/feat_trajectory_suxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1812,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "0195fa8bcb664f03f392909747fde1257aa0c480",
            "branch" : [
              {
                "SHA1" : "0195fa8bcb664f03f392909747fde1257aa0c480",
                "name" : "origin/feat_trajectory_suxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0195fa8bcb664f03f392909747fde1257aa0c480",
            "branch" : [
              {
                "SHA1" : "0195fa8bcb664f03f392909747fde1257aa0c480",
                "name" : "origin/feat_trajectory_suxi"
              }
            ]
          }
        },
        "origin/feat_straddle" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1292,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "4fda3dd5ddbb3047e946022e8b4517405439390d",
            "branch" : [
              {
                "SHA1" : "4fda3dd5ddbb3047e946022e8b4517405439390d",
                "name" : "origin/feat_straddle"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4fda3dd5ddbb3047e946022e8b4517405439390d",
            "branch" : [
              {
                "SHA1" : "4fda3dd5ddbb3047e946022e8b4517405439390d",
                "name" : "origin/feat_straddle"
              }
            ]
          }
        },
        "origin/tmp_reversing_truck" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 437,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fabd257bdea6f4c65211f0552d027c2d48d67ff1",
            "branch" : [
              {
                "SHA1" : "fabd257bdea6f4c65211f0552d027c2d48d67ff1",
                "name" : "origin/tmp_reversing_truck"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fabd257bdea6f4c65211f0552d027c2d48d67ff1",
            "branch" : [
              {
                "SHA1" : "fabd257bdea6f4c65211f0552d027c2d48d67ff1",
                "name" : "origin/tmp_reversing_truck"
              }
            ]
          }
        },
        "origin/lower_safe_thr_region" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 254,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "63e3449599733e81768584360442037f700bd130",
            "branch" : [
              {
                "SHA1" : "63e3449599733e81768584360442037f700bd130",
                "name" : "origin/lower_safe_thr_region"
              }
            ]
          },
          "revision" : {
            "SHA1" : "63e3449599733e81768584360442037f700bd130",
            "branch" : [
              {
                "SHA1" : "63e3449599733e81768584360442037f700bd130",
                "name" : "origin/lower_safe_thr_region"
              }
            ]
          }
        },
        "origin/feat_reverse_lane" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 197,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6806fd45934e755534dbaa5e7ab1c0c26c03c41c",
            "branch" : [
              {
                "SHA1" : "6806fd45934e755534dbaa5e7ab1c0c26c03c41c",
                "name" : "origin/feat_reverse_lane"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6806fd45934e755534dbaa5e7ab1c0c26c03c41c",
            "branch" : [
              {
                "SHA1" : "6806fd45934e755534dbaa5e7ab1c0c26c03c41c",
                "name" : "origin/feat_reverse_lane"
              }
            ]
          }
        },
        "origin/feat_yard_decider" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 451,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ceaec1a86e5cc4dfd017f0ec608a229ad757c437",
            "branch" : [
              {
                "SHA1" : "ceaec1a86e5cc4dfd017f0ec608a229ad757c437",
                "name" : "origin/feat_yard_decider"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ceaec1a86e5cc4dfd017f0ec608a229ad757c437",
            "branch" : [
              {
                "SHA1" : "ceaec1a86e5cc4dfd017f0ec608a229ad757c437",
                "name" : "origin/feat_yard_decider"
              }
            ]
          }
        },
        "origin/feat_safety_check" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 504,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f13057435427785612a0be829f74facb9b66884f",
            "branch" : [
              {
                "SHA1" : "f13057435427785612a0be829f74facb9b66884f",
                "name" : "origin/feat_safety_check"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f13057435427785612a0be829f74facb9b66884f",
            "branch" : [
              {
                "SHA1" : "f13057435427785612a0be829f74facb9b66884f",
                "name" : "origin/feat_safety_check"
              }
            ]
          }
        },
        "origin/feat_sc_mpc" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2174,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e1da74b409b7416c478723fbae98925a4349b9e4",
            "branch" : [
              {
                "SHA1" : "e1da74b409b7416c478723fbae98925a4349b9e4",
                "name" : "origin/feat_sc_mpc"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e1da74b409b7416c478723fbae98925a4349b9e4",
            "branch" : [
              {
                "SHA1" : "e1da74b409b7416c478723fbae98925a4349b9e4",
                "name" : "origin/feat_sc_mpc"
              }
            ]
          }
        },
        "origin/feat_motion_recover" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 726,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ba1dab660729e472f5dcc5e8d37358ad42f034e8",
            "branch" : [
              {
                "SHA1" : "ba1dab660729e472f5dcc5e8d37358ad42f034e8",
                "name" : "origin/feat_motion_recover"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ba1dab660729e472f5dcc5e8d37358ad42f034e8",
            "branch" : [
              {
                "SHA1" : "ba1dab660729e472f5dcc5e8d37358ad42f034e8",
                "name" : "origin/feat_motion_recover"
              }
            ]
          }
        },
        "origin/feat_wh_trailer_cpu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1947,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "22442cbd365130db54193a6fff806c3569c410b3",
            "branch" : [
              {
                "SHA1" : "22442cbd365130db54193a6fff806c3569c410b3",
                "name" : "origin/feat_wh_trailer_cpu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "22442cbd365130db54193a6fff806c3569c410b3",
            "branch" : [
              {
                "SHA1" : "22442cbd365130db54193a6fff806c3569c410b3",
                "name" : "origin/feat_wh_trailer_cpu"
              }
            ]
          }
        },
        "origin/feat_change" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 287,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "79b13f045e397ecfd25eef421479015c3bd736ba",
            "branch" : [
              {
                "SHA1" : "79b13f045e397ecfd25eef421479015c3bd736ba",
                "name" : "origin/feat_change"
              }
            ]
          },
          "revision" : {
            "SHA1" : "79b13f045e397ecfd25eef421479015c3bd736ba",
            "branch" : [
              {
                "SHA1" : "79b13f045e397ecfd25eef421479015c3bd736ba",
                "name" : "origin/feat_change"
              }
            ]
          }
        },
        "origin/feat_error_pnc_status" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1669,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7488347a486bc1348df9d3f239f9f43ce79ba4d4",
            "branch" : [
              {
                "SHA1" : "7488347a486bc1348df9d3f239f9f43ce79ba4d4",
                "name" : "origin/feat_error_pnc_status"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7488347a486bc1348df9d3f239f9f43ce79ba4d4",
            "branch" : [
              {
                "SHA1" : "7488347a486bc1348df9d3f239f9f43ce79ba4d4",
                "name" : "origin/feat_error_pnc_status"
              }
            ]
          }
        },
        "origin/feat-ssep-add-hd-map" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1295,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "fb03da3117413c1798e25a770b131d40e8eae298",
            "branch" : [
              {
                "SHA1" : "fb03da3117413c1798e25a770b131d40e8eae298",
                "name" : "origin/feat-ssep-add-hd-map"
              }
            ]
          },
          "revision" : {
            "SHA1" : "fb03da3117413c1798e25a770b131d40e8eae298",
            "branch" : [
              {
                "SHA1" : "fb03da3117413c1798e25a770b131d40e8eae298",
                "name" : "origin/feat-ssep-add-hd-map"
              }
            ]
          }
        },
        "origin/feat_trajectory_fix" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2055,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "01d91db117eb92069cdd33846ea3c62e855b5490",
            "branch" : [
              {
                "SHA1" : "01d91db117eb92069cdd33846ea3c62e855b5490",
                "name" : "origin/feat_trajectory_fix"
              }
            ]
          },
          "revision" : {
            "SHA1" : "01d91db117eb92069cdd33846ea3c62e855b5490",
            "branch" : [
              {
                "SHA1" : "01d91db117eb92069cdd33846ea3c62e855b5490",
                "name" : "origin/feat_trajectory_fix"
              }
            ]
          }
        },
        "origin/feat_park" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1410,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "4dfeb34832881570e72ec9f03d43527093b6deb4",
            "branch" : [
              {
                "SHA1" : "4dfeb34832881570e72ec9f03d43527093b6deb4",
                "name" : "origin/feat_park"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4dfeb34832881570e72ec9f03d43527093b6deb4",
            "branch" : [
              {
                "SHA1" : "4dfeb34832881570e72ec9f03d43527093b6deb4",
                "name" : "origin/feat_park"
              }
            ]
          }
        },
        "origin/fix_ssep" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 985,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bf45235b3482b4e4d6859874aef9655e1aa5b77d",
            "branch" : [
              {
                "SHA1" : "bf45235b3482b4e4d6859874aef9655e1aa5b77d",
                "name" : "origin/fix_ssep"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bf45235b3482b4e4d6859874aef9655e1aa5b77d",
            "branch" : [
              {
                "SHA1" : "bf45235b3482b4e4d6859874aef9655e1aa5b77d",
                "name" : "origin/fix_ssep"
              }
            ]
          }
        },
        "origin/feat_traffit_light_stop" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1589,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "351fd37ab1e4baf8eff9dc6fdd67d2ba27e8b431",
            "branch" : [
              {
                "SHA1" : "351fd37ab1e4baf8eff9dc6fdd67d2ba27e8b431",
                "name" : "origin/feat_traffit_light_stop"
              }
            ]
          },
          "revision" : {
            "SHA1" : "351fd37ab1e4baf8eff9dc6fdd67d2ba27e8b431",
            "branch" : [
              {
                "SHA1" : "351fd37ab1e4baf8eff9dc6fdd67d2ba27e8b431",
                "name" : "origin/feat_traffit_light_stop"
              }
            ]
          }
        },
        "origin/feat_trajectory_daxie_1" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1725,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "523d6e9237b447f388f4b65aeea122da2f3acaad",
            "branch" : [
              {
                "SHA1" : "523d6e9237b447f388f4b65aeea122da2f3acaad",
                "name" : "origin/feat_trajectory_daxie_1"
              }
            ]
          },
          "revision" : {
            "SHA1" : "523d6e9237b447f388f4b65aeea122da2f3acaad",
            "branch" : [
              {
                "SHA1" : "523d6e9237b447f388f4b65aeea122da2f3acaad",
                "name" : "origin/feat_trajectory_daxie_1"
              }
            ]
          }
        },
        "origin/feat_xl_cargo" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 288,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bca854785ba4ef0247def145cf821b9b569704f5",
            "branch" : [
              {
                "SHA1" : "bca854785ba4ef0247def145cf821b9b569704f5",
                "name" : "origin/feat_xl_cargo"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bca854785ba4ef0247def145cf821b9b569704f5",
            "branch" : [
              {
                "SHA1" : "bca854785ba4ef0247def145cf821b9b569704f5",
                "name" : "origin/feat_xl_cargo"
              }
            ]
          }
        },
        "origin/feat_mandula" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 742,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3f32a3ec07f7e4ff70920060bc1768a64a93a6d5",
            "branch" : [
              {
                "SHA1" : "3f32a3ec07f7e4ff70920060bc1768a64a93a6d5",
                "name" : "origin/feat_mandula"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3f32a3ec07f7e4ff70920060bc1768a64a93a6d5",
            "branch" : [
              {
                "SHA1" : "3f32a3ec07f7e4ff70920060bc1768a64a93a6d5",
                "name" : "origin/feat_mandula"
              }
            ]
          }
        },
        "origin/feat_wbca_st" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 523,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bc5a22cc8a3360d942c9ebf93a4c840dfe50b8c8",
            "branch" : [
              {
                "SHA1" : "bc5a22cc8a3360d942c9ebf93a4c840dfe50b8c8",
                "name" : "origin/feat_wbca_st"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bc5a22cc8a3360d942c9ebf93a4c840dfe50b8c8",
            "branch" : [
              {
                "SHA1" : "bc5a22cc8a3360d942c9ebf93a4c840dfe50b8c8",
                "name" : "origin/feat_wbca_st"
              }
            ]
          }
        },
        "origin/feat_seg_search_pjpo" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1011,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5dd7c817bb063c786843dedaea1e09fdb044e148",
            "branch" : [
              {
                "SHA1" : "5dd7c817bb063c786843dedaea1e09fdb044e148",
                "name" : "origin/feat_seg_search_pjpo"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5dd7c817bb063c786843dedaea1e09fdb044e148",
            "branch" : [
              {
                "SHA1" : "5dd7c817bb063c786843dedaea1e09fdb044e148",
                "name" : "origin/feat_seg_search_pjpo"
              }
            ]
          }
        },
        "origin/feat_base" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1315,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "35c890fe6d108738379774a7a1d377d88550f0e2",
            "branch" : [
              {
                "SHA1" : "35c890fe6d108738379774a7a1d377d88550f0e2",
                "name" : "origin/feat_base"
              }
            ]
          },
          "revision" : {
            "SHA1" : "35c890fe6d108738379774a7a1d377d88550f0e2",
            "branch" : [
              {
                "SHA1" : "35c890fe6d108738379774a7a1d377d88550f0e2",
                "name" : "origin/feat_base"
              }
            ]
          }
        },
        "origin/feat_smooth_mode" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1834,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "4e529beda6281c89daa913f798b557c92d0a3df5",
            "branch" : [
              {
                "SHA1" : "4e529beda6281c89daa913f798b557c92d0a3df5",
                "name" : "origin/feat_smooth_mode"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4e529beda6281c89daa913f798b557c92d0a3df5",
            "branch" : [
              {
                "SHA1" : "4e529beda6281c89daa913f798b557c92d0a3df5",
                "name" : "origin/feat_smooth_mode"
              }
            ]
          }
        },
        "origin/feat_ros2_platoon" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2177,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
            "branch" : [
              {
                "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
                "name" : "origin/feat_ros2_platoon"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
            "branch" : [
              {
                "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
                "name" : "origin/feat_ros2_platoon"
              }
            ]
          }
        },
        "origin/feat_hfsm" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 170,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f282a44a806a2a82b27bdcb7a898fc8d8aad5411",
            "branch" : [
              {
                "SHA1" : "f282a44a806a2a82b27bdcb7a898fc8d8aad5411",
                "name" : "origin/feat_hfsm"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f282a44a806a2a82b27bdcb7a898fc8d8aad5411",
            "branch" : [
              {
                "SHA1" : "f282a44a806a2a82b27bdcb7a898fc8d8aad5411",
                "name" : "origin/feat_hfsm"
              }
            ]
          }
        },
        "origin/feat_error" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1453,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "dc27b02eaf204e5b86844dff5a6fd5a9ba4b011e",
            "branch" : [
              {
                "SHA1" : "dc27b02eaf204e5b86844dff5a6fd5a9ba4b011e",
                "name" : "origin/feat_error"
              }
            ]
          },
          "revision" : {
            "SHA1" : "dc27b02eaf204e5b86844dff5a6fd5a9ba4b011e",
            "branch" : [
              {
                "SHA1" : "dc27b02eaf204e5b86844dff5a6fd5a9ba4b011e",
                "name" : "origin/feat_error"
              }
            ]
          }
        },
        "origin/feat_suxi" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1551,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "cc92bd150d538bd5b38022ce5093ffda871c951e",
            "branch" : [
              {
                "SHA1" : "cc92bd150d538bd5b38022ce5093ffda871c951e",
                "name" : "origin/feat_suxi"
              }
            ]
          },
          "revision" : {
            "SHA1" : "cc92bd150d538bd5b38022ce5093ffda871c951e",
            "branch" : [
              {
                "SHA1" : "cc92bd150d538bd5b38022ce5093ffda871c951e",
                "name" : "origin/feat_suxi"
              }
            ]
          }
        },
        "origin/feat_guide_line" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 661,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "d85529c9182f6b17004349c502ce183121f325de",
            "branch" : [
              {
                "SHA1" : "d85529c9182f6b17004349c502ce183121f325de",
                "name" : "origin/feat_guide_line"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d85529c9182f6b17004349c502ce183121f325de",
            "branch" : [
              {
                "SHA1" : "d85529c9182f6b17004349c502ce183121f325de",
                "name" : "origin/feat_guide_line"
              }
            ]
          }
        },
        "origin/feat-speed-limit" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 304,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a7e98a4a02cf06b6a1379db0412864459bea384e",
            "branch" : [
              {
                "SHA1" : "a7e98a4a02cf06b6a1379db0412864459bea384e",
                "name" : "origin/feat-speed-limit"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a7e98a4a02cf06b6a1379db0412864459bea384e",
            "branch" : [
              {
                "SHA1" : "a7e98a4a02cf06b6a1379db0412864459bea384e",
                "name" : "origin/feat-speed-limit"
              }
            ]
          }
        },
        "origin/feat_wh" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1528,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "166219f79a22689fa52cdc391abdea6433d4ae37",
            "branch" : [
              {
                "SHA1" : "166219f79a22689fa52cdc391abdea6433d4ae37",
                "name" : "origin/feat_wh"
              }
            ]
          },
          "revision" : {
            "SHA1" : "166219f79a22689fa52cdc391abdea6433d4ae37",
            "branch" : [
              {
                "SHA1" : "166219f79a22689fa52cdc391abdea6433d4ae37",
                "name" : "origin/feat_wh"
              }
            ]
          }
        },
        "origin/feat_xilian_lane_change" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 710,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7db10a51bb61d31a6dacddddef02b49f38ceab58",
            "branch" : [
              {
                "SHA1" : "7db10a51bb61d31a6dacddddef02b49f38ceab58",
                "name" : "origin/feat_xilian_lane_change"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7db10a51bb61d31a6dacddddef02b49f38ceab58",
            "branch" : [
              {
                "SHA1" : "7db10a51bb61d31a6dacddddef02b49f38ceab58",
                "name" : "origin/feat_xilian_lane_change"
              }
            ]
          }
        },
        "origin/rc_dev_wf" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 231,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ee9fa7a02bb35ee685cee883124da9f669ab6e75",
            "branch" : [
              {
                "SHA1" : "ee9fa7a02bb35ee685cee883124da9f669ab6e75",
                "name" : "origin/rc_dev_wf"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ee9fa7a02bb35ee685cee883124da9f669ab6e75",
            "branch" : [
              {
                "SHA1" : "ee9fa7a02bb35ee685cee883124da9f669ab6e75",
                "name" : "origin/rc_dev_wf"
              }
            ]
          }
        },
        "origin/feat_lock_station" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 987,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3e483224ec848dfc40cc51b8fccf47d1f3716d3d",
            "branch" : [
              {
                "SHA1" : "3e483224ec848dfc40cc51b8fccf47d1f3716d3d",
                "name" : "origin/feat_lock_station"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3e483224ec848dfc40cc51b8fccf47d1f3716d3d",
            "branch" : [
              {
                "SHA1" : "3e483224ec848dfc40cc51b8fccf47d1f3716d3d",
                "name" : "origin/feat_lock_station"
              }
            ]
          }
        },
        "origin/feat_og" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 513,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "17cf5ba4d4c3a3a18a2a6c039346d12deed329bb",
            "branch" : [
              {
                "SHA1" : "17cf5ba4d4c3a3a18a2a6c039346d12deed329bb",
                "name" : "origin/feat_og"
              }
            ]
          },
          "revision" : {
            "SHA1" : "17cf5ba4d4c3a3a18a2a6c039346d12deed329bb",
            "branch" : [
              {
                "SHA1" : "17cf5ba4d4c3a3a18a2a6c039346d12deed329bb",
                "name" : "origin/feat_og"
              }
            ]
          }
        },
        "origin/feat_pnc_scene_replay_web" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2111,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
            "branch" : [
              {
                "SHA1" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
                "name" : "origin/feat_pnc_scene_replay_web"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
            "branch" : [
              {
                "SHA1" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
                "name" : "origin/feat_pnc_scene_replay_web"
              }
            ]
          }
        },
        "origin/feat_escape" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1231,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "07da24972be561730ba0607d76f6a479db4b96a9",
            "branch" : [
              {
                "SHA1" : "07da24972be561730ba0607d76f6a479db4b96a9",
                "name" : "origin/feat_escape"
              }
            ]
          },
          "revision" : {
            "SHA1" : "07da24972be561730ba0607d76f6a479db4b96a9",
            "branch" : [
              {
                "SHA1" : "07da24972be561730ba0607d76f6a479db4b96a9",
                "name" : "origin/feat_escape"
              }
            ]
          }
        },
        "origin/feat_proto_xiamen" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2176,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1ff7167cb591123ef08119f40a537cdbe402fe19",
            "branch" : [
              {
                "SHA1" : "1ff7167cb591123ef08119f40a537cdbe402fe19",
                "name" : "origin/feat_proto_xiamen"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1ff7167cb591123ef08119f40a537cdbe402fe19",
            "branch" : [
              {
                "SHA1" : "1ff7167cb591123ef08119f40a537cdbe402fe19",
                "name" : "origin/feat_proto_xiamen"
              }
            ]
          }
        },
        "origin/feat_dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 755,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "f6a5b6ebde79a0d1f93b43f0da4a847743bc28b3",
            "branch" : [
              {
                "SHA1" : "f6a5b6ebde79a0d1f93b43f0da4a847743bc28b3",
                "name" : "origin/feat_dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f6a5b6ebde79a0d1f93b43f0da4a847743bc28b3",
            "branch" : [
              {
                "SHA1" : "f6a5b6ebde79a0d1f93b43f0da4a847743bc28b3",
                "name" : "origin/feat_dev"
              }
            ]
          }
        },
        "origin/feat_pnc_status" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1640,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "a0e27a4547573c85a1e22a137a9413f6591bd994",
            "branch" : [
              {
                "SHA1" : "a0e27a4547573c85a1e22a137a9413f6591bd994",
                "name" : "origin/feat_pnc_status"
              }
            ]
          },
          "revision" : {
            "SHA1" : "a0e27a4547573c85a1e22a137a9413f6591bd994",
            "branch" : [
              {
                "SHA1" : "a0e27a4547573c85a1e22a137a9413f6591bd994",
                "name" : "origin/feat_pnc_status"
              }
            ]
          }
        },
        "origin/modify_lane_change_new" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 84,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c1443c21419c749982e38d885282592a971fdcf7",
            "branch" : [
              {
                "SHA1" : "c1443c21419c749982e38d885282592a971fdcf7",
                "name" : "origin/modify_lane_change_new"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c1443c21419c749982e38d885282592a971fdcf7",
            "branch" : [
              {
                "SHA1" : "c1443c21419c749982e38d885282592a971fdcf7",
                "name" : "origin/modify_lane_change_new"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
        "branch" : [
          {
            "SHA1" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
            "name" : "origin/feat_ros2_platoon"
          }
        ]
      },
      "remoteUrls" : [
        "http://159.27.226.4/pnc/pnc.git"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/ros2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2177,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
            "branch" : [
              {
                "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
                "name" : "origin/ros2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
            "branch" : [
              {
                "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
                "name" : "origin/ros2"
              }
            ]
          }
        },
        "origin/feat_hypsographic_map" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1705,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7edae3e34281e5446eb04da3b4093217e61f2337",
            "branch" : [
              {
                "SHA1" : "7edae3e34281e5446eb04da3b4093217e61f2337",
                "name" : "origin/feat_hypsographic_map"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7edae3e34281e5446eb04da3b4093217e61f2337",
            "branch" : [
              {
                "SHA1" : "7edae3e34281e5446eb04da3b4093217e61f2337",
                "name" : "origin/feat_hypsographic_map"
              }
            ]
          }
        },
        "origin/temp_interface" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 387,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "cd454059f302c9b2474e6609c1546a358ce6f72f",
            "branch" : [
              {
                "SHA1" : "cd454059f302c9b2474e6609c1546a358ce6f72f",
                "name" : "origin/temp_interface"
              }
            ]
          },
          "revision" : {
            "SHA1" : "cd454059f302c9b2474e6609c1546a358ce6f72f",
            "branch" : [
              {
                "SHA1" : "cd454059f302c9b2474e6609c1546a358ce6f72f",
                "name" : "origin/temp_interface"
              }
            ]
          }
        },
        "origin/rc_dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2176,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "baaa7dbe0743898225ca422520bae8e624a4d3e1",
            "branch" : [
              {
                "SHA1" : "baaa7dbe0743898225ca422520bae8e624a4d3e1",
                "name" : "origin/rc_dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "baaa7dbe0743898225ca422520bae8e624a4d3e1",
            "branch" : [
              {
                "SHA1" : "baaa7dbe0743898225ca422520bae8e624a4d3e1",
                "name" : "origin/rc_dev"
              }
            ]
          }
        },
        "origin/rc_dev_add_lane_name" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1462,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "be65f77d9d0f6a3ae20cc796e381889a03ce43ee",
            "branch" : [
              {
                "SHA1" : "be65f77d9d0f6a3ae20cc796e381889a03ce43ee",
                "name" : "origin/rc_dev_add_lane_name"
              }
            ]
          },
          "revision" : {
            "SHA1" : "be65f77d9d0f6a3ae20cc796e381889a03ce43ee",
            "branch" : [
              {
                "SHA1" : "be65f77d9d0f6a3ae20cc796e381889a03ce43ee",
                "name" : "origin/rc_dev_add_lane_name"
              }
            ]
          }
        },
        "origin/feat_fence" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 594,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "bfea094fbf5d6f1c5eca3dfaa2044894fec263f6",
            "branch" : [
              {
                "SHA1" : "bfea094fbf5d6f1c5eca3dfaa2044894fec263f6",
                "name" : "origin/feat_fence"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bfea094fbf5d6f1c5eca3dfaa2044894fec263f6",
            "branch" : [
              {
                "SHA1" : "bfea094fbf5d6f1c5eca3dfaa2044894fec263f6",
                "name" : "origin/feat_fence"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
        "branch" : [
          {
            "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
            "name" : "origin/ros2"
          }
        ]
      },
      "remoteUrls" : [
        "http://159.27.226.4/map/hdmap_interface.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    },
    {
      "_class" : "org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"
    },
    {
      
    },
    {
      
    },
    {
      
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#2177",
  "duration" : 370030,
  "estimatedDuration" : 1367806,
  "executor" : null,
  "fullDisplayName" : "module-pnc_replayer #2177",
  "id" : "2177",
  "keepLog" : false,
  "number" : 2177,
  "queueId" : 1359051,
  "result" : "FAILURE",
  "timestamp" : 1792567548737,
  "url" : "http://159.27.114.184:8080/jenkins/job/module-pnc_replayer/2177/",
  "changeSets" : [
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "platoon_msgs/msg/LaneChangeInfo.msg",
            "platoon_msgs/msg/VehicleInfo.msg",
            "platoon_msgs/CMakeLists.txt"
          ],
          "commitId" : "7b8133dd2f1f34e239864682df59fd6ed1393014",
          "timestamp" : 1789451206000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: 编队变道相关消息\u000a",
          "date" : "2026-09-15 13:46:46 +0800",
          "id" : "7b8133dd2f1f34e239864682df59fd6ed1393014",
          "msg" : "fix: 编队变道相关消息",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "platoon_msgs/msg/VehicleInfo.msg"
            },
            {
              "editType" : "add",
              "file" : "platoon_msgs/msg/LaneChangeInfo.msg"
            },
            {
              "editType" : "edit",
              "file" : "platoon_msgs/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "platoon_msgs/msg/LaneChangeInfo.msg",
            "platoon_msgs/msg/VehicleInfo.msg",
            "platoon_msgs/CMakeLists.txt",
            "platoon_msgs/msg/PNCInfo.msg"
          ],
          "commitId" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
          "timestamp" : 1789994399000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Consolidate platoon planning data into compact PNCInfo message\u000a",
          "date" : "2026-09-21 20:39:59 +0800",
          "id" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
          "msg" : "Consolidate platoon planning data into compact PNCInfo message",
          "paths" : [
            {
              "editType" : "delete",
              "file" : "platoon_msgs/msg/LaneChangeInfo.msg"
            },
            {
              "editType" : "edit",
              "file" : "platoon_msgs/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "platoon_msgs/msg/PNCInfo.msg"
            },
            {
              "editType" : "edit",
              "file" : "platoon_msgs/msg/VehicleInfo.msg"
            }
          ]
        }
      ],
      "kind" : "git"
    },
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/vehicle/request_routing_data.hpp",
            "data/plan/switch_data.hpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "data/map/pnc_map/routing_extension/routing_data.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "data/semantic/semantic_description.hpp",
            "common/time/time.hpp",
            "data/object.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "data/vehicle/deviation_status.hpp",
            "data/plan/smooth_data.hpp",
            "replayer/scene_data/remaining_plan_proto_codec.hpp"
          ],
          "commitId" : "97f1f432103592542d9adceecbbd2806990c777b",
          "timestamp" : 1787337277000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 补齐规划地图显式 Proto Codec\u000a",
          "date" : "2026-08-22 02:34:37 +0800",
          "id" : "97f1f432103592542d9adceecbbd2806990c777b",
          "msg" : "feat: 补齐规划地图显式 Proto Codec",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/semantic/semantic_description.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/deviation_status.hpp"
            },
            {
              "editType" : "edit",
              "file" : "common/time/time.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/object.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/smooth_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/algorithm_replay/report_artifact_bundle.cpp",
            "Testing/regression_report_test.cpp",
            "Testing/load_snap_data_compat_test.cpp",
            "replayer/analysis_server/binary_update_broker.hpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.cpp",
            "CMakeLists.txt",
            "replayer/scene_data/replayer_data_process_adapter.hpp",
            "replayer/scene_data/full_proto_custom_encoder.hpp",
            "replayer/algorithm_replay/experiment_analysis_coordinator.cpp",
            "replayer/scene_data/compatibility_registry.cpp",
            "replayer/tagfs/tagfs_adapter.hpp",
            "replayer/scene_data/versioned_compact_decoder.cpp",
            "replayer/algorithm_replay/generated_variant_config_patch.hpp",
            "Testing/execution_profile_registry_test.cpp",
            "replayer/scene_data/cfg_scenarios_proto_codec.cpp",
            "replayer/scene_replay/scene_bundle_codec.hpp",
            "replayer/algorithm_replay/profiles/dp.yaml",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "replayer/algorithm_replay/assertion_profile_loader.cpp",
            "proto/pnc_scene/compact_scene.proto",
            "replayer/algorithm_replay/profiles/keb_lane_follow.yaml",
            "replayer/scene_data/proto_bag_scene_builder.cpp",
            "replayer/algorithm_replay/execution_profile_registry.hpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "tools/pnc_proto_mapper/baseline/plan_frame_descriptor.pb",
            "proto/ssep_compact.proto",
            "replayer/scene_data/obstacle_proto_codec.hpp",
            "replayer/scene_data/map_provider.cpp",
            "data/vehicle/spreader_protect.hpp",
            "Testing/beast_analysis_server_test.cpp",
            "data/app/reaction/app_reaction.hpp",
            "replayer/scene_data/live_compact_ingress.cpp",
            "replayer/analysis_server/config/analysis_server.lsg.proto_bag.yaml",
            "replayer/analysis_server/analysis_server_app.cpp",
            "tools/pnc_proto_bag_server/main.cpp",
            "data/plan/path_direction_data.hpp",
            "Testing/compatibility_registry_test.cpp",
            "data/dp_poly_path/dp_road_graph.hpp",
            "data/common/guide_path.cpp",
            "replayer/scene_data/legacy_location_repair.hpp",
            "replayer/analysis_server/compact_geometry_wire.hpp",
            "data/vehicle/priori_bay_info.hpp",
            "replayer/scene_data/compact_proto_codec.cpp",
            "scenarios/scenario.cpp",
            "Testing/linear_velocity_generator_test.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "proto/pnc_scene/compressed_frame_chunk.proto",
            "replayer/algorithm_replay/candidate_frame_builder.cpp",
            "replayer/scene_data/vehicle_state_proto_codec.hpp",
            "Testing/pnc_case_cli_test.cpp",
            "Testing/compact_scene_service_handler_test.cpp",
            "replayer/scene_replay/scene_replay_web_page.hpp",
            "replayer/algorithm_replay/profiles/keb.yaml",
            "scenarios/scenario_supervise.cpp",
            "replayer/scene_data/compact_replay_session.hpp",
            "Testing/async_generation_guard_test.cpp",
            "Testing/cfg_scenarios_proto_codec_test.cpp",
            "data/config/cfg_static.hpp",
            "replayer/analysis_server/compact_scene_service_handler.cpp",
            "replayer/scene_replay/payload_codec.cpp",
            "replayer/algorithm_replay/production_variant_runner.hpp",
            "replayer/scene_data/generated/trajectory_schema_inputs.json",
            "replayer/analysis_server/proto_http_router.cpp",
            "replayer/analysis_server/config/analysis_server.example.yaml",
            "data/plan/side_pass_data.hpp",
            "replayer/algorithm_replay/profile_collectors.cpp",
            "proto/scenario.proto",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/longitude_constrain_proto_codec.cpp",
            "replayer/tagfs/tagfs_clients.cpp",
            "replayer/algorithm_replay/assertions/lateral_path.yaml",
            "proto/pnc_scene/scene_map_layer.proto",
            "replayer/scene_replay/scene_replay_proto.cpp",
            "scenarios/parking_scenario/parking_move_stage.cpp",
            "replayer/scene_replay/recorded_scene_session.cpp",
            "launch/replay/regression_task.launch",
            "replayer/scene_data/generated/plan_frame_member_inputs.json",
            "replayer/scene_data/config_proto_codec.hpp",
            "proto/vehicle.proto",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "replayer/scene_replay/live_compressed_frame_ingress.cpp",
            "tools/pnc_case/pnc_case_main.cpp",
            "replayer/scene_replay/scene_replay_service.hpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "replayer/algorithm_replay/assertions/common.yaml",
            "replayer/scene_data/compact_geometry_codec.cpp",
            "Testing/generated_variant_config_patch_test.cpp",
            "tools/pnc_proto_mapper/bandwidth_lint.py",
            "replayer/scene_data/compatibility_gateway.cpp",
            "tools/pnc_proto_mapper/audit_plan_frame_fields.py",
            "proto/scene_replay_api.proto",
            "data/obstacle/perception_obstacle.hpp",
            "replayer/algorithm_replay/replay_history.hpp",
            "tools/pnc_proto_mapper/baseline/plan_frame_field_roles.json",
            "data/other/flow_control.hpp",
            "scenarios/into_yard_junction_scenario/into_yard_junction_first_stage.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "tools/pnc_proto_mapper/generate_hmi_layer_catalog.py",
            "scenarios/scenario_supervise.hpp",
            "tools/pnc_proto_bag_to_scene/main.cpp",
            "replayer/scene_data/hmi_layer_manifest.yaml",
            "Testing/report_artifact_bundle_test.cpp",
            "replayer/scene_replay/payload_codec.hpp",
            "proto/scene_payload.proto",
            "replayer/scene_replay/compressed_frame_ring_buffer.cpp",
            "replayer/analysis_server/scene_replay_service_handler.cpp",
            "data/plan/guide_line.hpp",
            "replayer/algorithm_replay/regression_report.cpp",
            "data/vehicle/lock_station_pts.hpp",
            "Testing/compact_replay_session_test.cpp",
            "replayer/analysis_server/beast_analysis_server.cpp",
            "replayer/case_orchestrator/case_orchestrator.hpp",
            "replayer/scene_data/generated/plan_frame_mapping_scaffold.yaml",
            "proto/debug.proto",
            "Testing/encoding_benchmark_test.cpp",
            "data/config/cfg_stage.cpp",
            "Testing/experiment_session_test.cpp",
            "Testing/experiment_analysis_coordinator_test.cpp",
            "replayer/tagfs/tagfs_clients.hpp",
            "data/plan/reference_line_info.hpp",
            "replayer/algorithm_replay/async_generation_guard.cpp",
            "proto/pnc_scene/compact_guide_line.proto",
            "replayer/scene_replay/live_compressed_frame_ingress.hpp",
            "replayer/scene_data/encoding_benchmark.cpp",
            "proto/pnc_scene/scene_debug_layer.proto",
            "proto/map_data.proto",
            "data/obstacle/prediction_trajectory.hpp",
            "replayer/live_bridge/pnc_live_web_bridge.cpp",
            "scenarios/stage.hpp",
            "data/vehicle/cloud_pnc_config.hpp",
            "replayer/scene_data/vehicle_input_proto_codec.hpp",
            "data/obstacle/obstacle_decider_attr.hpp",
            "proto/pnc_scene/scene_channel.proto",
            "replayer/algorithm_replay/stage_task_replay_engine.hpp",
            "replayer/scene_importer/legacy_boost_plan_frame_decoder.hpp",
            ".gitignore",
            "data/vehicle/container_compensate_info.hpp",
            "proto/pnc_scene/compressed_scene_payload.proto",
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "replayer/algorithm_replay/batch_regression_runner.cpp",
            "docs/pnc_algorithm_replay/proto_generation.md",
            "replayer/analysis_server/scene_channel_wire.hpp",
            "tools/pnc_proto_mapper/sync_trajectory_schema.py",
            "proto/pnc_scene/scene_chart.proto",
            "replayer/scene_data/proto_codec_gap.hpp",
            "replayer/algorithm_replay/assertion_engine.hpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.hpp",
            "tools/pnc_scene_importer/main.cpp",
            "replayer/algorithm_replay/generated_variant_config_patch.cpp",
            "data/map/reference/reference_segment.hpp",
            "replayer/case_orchestrator/pnc_case_cli.cpp",
            "data/vehicle/vehicle_status.hpp",
            "replayer/scene_data/generated/hmi_layer_catalog.cpp",
            "replayer/scene_replay/README.md",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "sink/ros_sink_snapshot_compact_scene.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "tools/pnc_proto_mapper/hmi_taxonomy_lint.py",
            "tools/pnc_proto_mapper/sync_state_schema.py",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/live_bridge/config/live_bridge.example.yaml",
            "replayer/algorithm_replay/profiles/full_stage.yaml",
            "tools/pnc_encoding_benchmark/main.cpp",
            "tools/pnc_proto_mapper/baseline/scene_replay_api_descriptor.pb",
            "proto/common.proto",
            "tools/pnc_proto_mapper/audit_task_chains.py",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "Testing/batch_regression_runner_test.cpp",
            "data/map/pnc_map/road_segments.cpp",
            "replayer/scene_data/proto_bag_scene_builder.hpp",
            "replayer/sdk/replay_backend_c.cpp",
            "proto/pnc_scene/compact_recorded_result.proto",
            "proto/trajectory.proto",
            "data/vehicle/vehicle_state.hpp",
            "tools/pnc_proto_mapper/generator.py",
            "proto/CMakeLists.txt",
            "replayer/scene_importer/legacy_scene_importer.cpp",
            "replayer/live_bridge/live_scene_service_handler.hpp",
            "replayer/algorithm_replay/execution_profile_registry.cpp",
            "algorithm/wbca/linear_velocity_generator.cpp",
            "data/vehicle/cmd_feedback_state.hpp",
            "data/app/app_data.hpp",
            "replayer/scene_data/scene_payload_codec.cpp",
            "replayer/scene_data/generated/state_schema_inputs.json",
            "replayer/algorithm_replay/assertions/longitudinal_trajectory.yaml",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "core/snapshot_async.cpp",
            "data/constrain/block_data.hpp",
            "replayer/algorithm_replay/assertion_pack_registry.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "tools/pnc_proto_mapper/scaffold_mapping.py",
            ".vscode/tasks.json",
            "replayer/scene_data/compact_replay_session.cpp",
            "replayer/sdk/planframe_compat.hpp",
            "scenarios/scenario.hpp",
            "source/ros_source_replayer_snapshot.cpp",
            "replayer/algorithm_replay/assertion_engine.cpp",
            "Testing/legacy_scene_importer_test.cpp",
            "replayer/algorithm_replay/candidate_frame_builder.hpp",
            "Testing/assertion_pack_registry_test.cpp",
            "tools/pnc_proto_mapper/full_schema_lint.py",
            "replayer/logic.cpp",
            "sink/ros_sink_snapshot_compact_scene.hpp",
            "replayer/algorithm_replay/production_variant_runner.cpp",
            "replayer/live_bridge/pnc_live_bridge_app.hpp",
            "Testing/live_bridge_app_test.cpp",
            "replayer/analysis_server/scene_channel_wire.cpp",
            "replayer/analysis_server/compact_scene_service_handler.hpp",
            "proto/replay_v15.proto",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "docs/compact_proto_boost_removal.md",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "replayer/analysis_server/proto_http_router.hpp",
            "proto/obstacle_compact.proto",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-production-async.yaml",
            "proto/pnc_scene/compact_geometry.proto",
            "data/vehicle/lock_station_data.hpp",
            "replayer/scene_data/longitude_constrain_proto_codec.hpp",
            "scenarios/task_execution_policy.hpp",
            "proto/pnc_scene/compact_recorded_debug.proto",
            "data/lattice/ogm_crash_data.hpp",
            "tasks/task_factory.cpp",
            "proto/pnc_scene/experiment_parameter_patch.proto",
            "data/map/pnc_map/road_segments.h",
            "replayer/scene_importer/legacy_scene_importer.hpp",
            "tools/pnc_proto_mapper/test_build_boundaries.py",
            "data/constrain/disable_stop_range.hpp",
            "replayer/scene_replay/recorded_scene_session.hpp",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/remaining_plan_proto_codec.hpp",
            "tools/pnc_replay_backend/ensure_ros_master.sh",
            "data/vehicle/yard_occupy_info.hpp",
            "proto/pnc_scene/scene_envelope.proto",
            "replayer/analysis_server/binary_update_broker.cpp",
            "replayer/scene_data/replayer_data_process_adapter.cpp",
            "data/plan/ssep_data.hpp",
            "replayer/scene_data/compact_geometry_codec.hpp",
            "replayer/algorithm_replay/experiment_session.cpp",
            "offboard/bag_to_keb_scene/bag_to_keb_scene.cc",
            "proto/pnc_scene/live_compact_frame.proto",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/compact_scene_archive_codec.hpp",
            "data/vehicle/vehicle_destination.hpp",
            "replayer/algorithm_replay/report_artifact_bundle.hpp",
            "replayer/scene_data/encoding_benchmark.hpp",
            "replayer/analysis_server/beast_analysis_server.hpp",
            "data/config/cfg_lat_plan.hpp",
            "replayer/scene_data/recorded_frame_decoder.cpp",
            "replayer/tagfs/tagfs_adapter.cpp",
            "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-lane-follow.yaml",
            "replayer/algorithm_replay/replay_history.cpp",
            "replayer/algorithm_replay/generated/scenario_task_chains.json",
            "tools/pnc_proto_mapper/import_full_schema_mapping.py",
            "Testing/case_orchestrator_test.cpp",
            "scenarios/lane_follow_scenario/lane_follow_stage.cpp",
            "replayer/algorithm_replay/assertion_profile_loader.hpp",
            "tools/pnc_proto_mapper/schema_lint.py",
            "replayer/scene_data/legacy_location_repair.cpp",
            "replayer/scene_data/versioned_compact_decoder.hpp",
            "replayer/algorithm_replay/profiles/wbca.yaml",
            "replayer/scene_data/map_provider.hpp",
            "replayer/analysis_server/README.md",
            "data/vehicle/parallel_driving_state.hpp",
            "Testing/scene_channel_wire_test.cpp",
            "tools/pnc_proto_mapper/sync_container_schema.py",
            "scenarios/stage.cpp",
            "replayer/scene_data/vehicle_input_proto_codec.cpp",
            "replayer/live_bridge/pnc_live_web_bridge.hpp",
            "replayer/scene_replay/recorded_frame_pipeline.cpp",
            "replayer/analysis_server/analysis_server_app.hpp",
            "plan/prepare/prepare_lane_constrain.cpp",
            "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-ssep.yaml",
            "replayer/scene_data/vehicle_state_proto_codec.cpp",
            "proto/pnc_scene/scene_planning_layer.proto",
            "replayer/algorithm_replay/assertion_pack_registry.hpp",
            "replayer/algorithm_replay/profiles/lattice.yaml",
            "replayer/scene_replay/scene_replay_service.cpp",
            "replayer/scene_data/compact_proto_codec.hpp",
            "replayer/scene_replay/recorded_frame_pipeline.hpp",
            "replayer/scene_data/recorded_frame_decoder.hpp",
            "replayer/scene_data/generated/hmi_layer_catalog.hpp",
            "data/obstacle/obstacle.hpp",
            "replayer/algorithm_replay/experiment_session.hpp",
            "replayer/scene_data/compact_scene_archive_codec.cpp",
            "replayer/scene_importer/legacy_boost_plan_frame_decoder.cpp",
            "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp",
            "replayer/algorithm_replay/batch_regression_runner.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/case_orchestrator/pnc_case_cli.hpp",
            "data/app/fsm_interface.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/regression_task_api_test.cpp",
            "proto/pnc_scene/pnc_mapping_options.proto",
            "data/vehicle/traffic_light_data.hpp",
            "common/util/hdmap_wrapper.cpp",
            "proto/decision.proto",
            "data/map/envelop/map_envelops.cpp",
            "tools/pnc_analysis_server/pnc_analysis_server_main.cpp",
            "Testing/live_web_bridge_test.cpp",
            "proto/pnc_scene/compact_replay_input.proto",
            "tools/pnc_proto_mapper/proto_only_lint.py",
            "tools/pnc_proto_mapper/test_mapping_contract.py",
            "replayer/replayer_data_process/load_snap_data.cpp",
            "Testing/planframe_compat_test.cpp",
            "tools/pnc_proto_mapper/check_custom_encoders.py",
            "proto/pnc_scene/scene_input_layer.proto",
            "proto/pnc_scene/scene_manifest.proto",
            "replayer/scene_data/config_proto_codec.cpp",
            "Taskfile.yml",
            "replayer/scene_replay/scene_replay_proto.hpp",
            "proto/trajectory_compact.proto",
            "data/config/cfg_hmi_layer_mapping.yaml",
            "tools/pnc_replay_backend/publish_bundle.py",
            ".vscode/launch.json",
            "data/ctrl/lka_start_up.hpp",
            "proto/pnc_scene/full_plan_frame.proto",
            "replayer/scene_data/scene_payload_codec.hpp",
            "replayer/algorithm_replay/profile_collectors.hpp",
            "proto/data_path_compact.proto",
            "data/vehicle/lane_detection.hpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "Testing/tagfs_adapter_test.cpp",
            "proto/plan_data.proto",
            "replayer/sdk/planframe_compat.cpp",
            "replayer/live_bridge/live_scene_service_handler.cpp",
            "docs/pnc_algorithm_replay/schema_v1_decisions.md",
            "replayer/scene_replay/compressed_frame_ring_buffer.hpp",
            "replayer/algorithm_replay/assertions/dp_reverse_meeting.yaml",
            "tools/pnc_proto_mapper/baseline/compact_scene_descriptor.pb",
            "tools/pnc_proto_mapper/test_hmi_taxonomy_lint.py",
            "data/plan/start_point_data.hpp",
            "data/plan/guide_line_info.hpp",
            "replayer/sdk/replay_backend_c.h",
            "replayer/scene_data/compatibility_gateway.hpp",
            "Testing/profile_collectors_test.cpp",
            "data/ctrl/ctrl_data.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "data/vehicle/cloud_lane_change_status.hpp",
            "replayer/scene_data/compatibility_registry.hpp",
            "replayer/scene_replay/scene_bundle_codec.cpp",
            "Testing/pnc_map_reflection_test.cpp",
            "replayer/algorithm_replay/experiment_analysis_coordinator.hpp",
            "replayer/algorithm_replay/profiles/keb_production_async.yaml",
            "data/plan/path_data.hpp",
            "replayer/analysis_server/scene_replay_service_handler.hpp",
            "replayer/algorithm_replay/regression_report.hpp",
            "replayer/algorithm_replay/profiles/pjpo.yaml",
            "data/vehicle/veh_his_states.hpp",
            "replayer/case_orchestrator/case_orchestrator.cpp",
            "replayer/algorithm_replay/async_generation_guard.hpp",
            "proto/config.proto",
            "Testing/tagfs_clients_test.cpp",
            "data/config/cfg_stage.hpp",
            "replayer/scene_data/cfg_scenarios_proto_codec.hpp",
            "replayer/analysis_server/compact_geometry_wire.cpp",
            "tools/pnc_live_bridge/main.cpp",
            "replayer/algorithm_replay/stage_task_replay_engine.cpp",
            "replayer/scene_data/live_compact_ingress.hpp",
            "tools/pnc_regression_task/pnc_regression_task_main.cpp",
            "tools/pnc_proto_mapper/test_proto_only_lint.py",
            "source/ros_source_replayer_snapshot.hpp",
            "Testing/analysis_server_app_test.cpp",
            "proto/obstacle.proto"
          ],
          "commitId" : "40a5c6c5e6f7a30544a36b89d60ee22369f8a2e2",
          "timestamp" : 1787494317000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善规划场景录制与回放链路\u000a\u000a实现自动生成的全量 PlanFrame Proto 与面向带宽的 Compact Proto 编解码，移除新快照链路对 Boost serialize 的依赖。\\n\\n补齐在线快照、离线回放、算法 Candidate 重建、自动化回归、TagFS 接入、OTA backend SDK，以及按需图层和曲线所需的二进制传输合同。\\n\\n增加字段审计、合同生成、带宽约束、HMI 分类和端到端回归测试，并提供公共 task、launch 与团队使用文档。\u000a",
          "date" : "2026-08-23 22:11:57 +0800",
          "id" : "40a5c6c5e6f7a30544a36b89d60ee22369f8a2e2",
          "msg" : "feat: 完善规划场景录制与回放链路",
          "paths" : [
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/live_scene_service_handler.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_importer/legacy_boost_plan_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/tagfs_adapter_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_importer/legacy_boost_plan_frame_decoder.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_chart.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_scene_archive_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/scene_channel_wire.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/live_compact_ingress.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/full_stage.yaml"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_map_layer.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/debug.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/replay_history.cpp"
            },
            {
              "editType" : "edit",
              "file" : ".gitignore"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_replay_proto.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/assertion_pack_registry_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/parallel_driving_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_scene_service_handler_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cloud_pnc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/perception_obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/baseline/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/async_generation_guard.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/replayer_data_process_adapter.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/live_web_bridge_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compatibility_registry.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/bandwidth_lint.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/binary_update_broker.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/live_scene_service_handler.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/recorded_scene_session.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/cfg_scenarios_proto_codec_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/dp_road_graph.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/proto_only_lint.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_pack_registry.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/execution_profile_registry_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/pnc_mapping_options.proto"
            },
            {
              "editType" : "add",
              "file" : "proto/scene_replay_api.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/full_proto_custom_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_destination.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/candidate_frame_builder.cpp"
            },
            {
              "editType" : "add",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "add",
              "file" : "Testing/tagfs_clients_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profile_collectors.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_engine.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_profile_loader.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/proto_codec_gap.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/prediction_trajectory.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/versioned_compact_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/generate_hmi_layer_catalog.py"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_envelope.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/longitude_constrain_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/async_generation_guard_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/batch_regression_runner.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/vehicle_input_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/experiment_analysis_coordinator.cpp"
            },
            {
              "editType" : "add",
              "file" : ".vscode/launch.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/recorded_scene_session.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/baseline/plan_frame_field_roles.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/binary_update_broker.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/parking_scenario/parking_move_stage.cpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_snapshot_compact_scene.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_segment.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/full_plan_frame.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_importer/legacy_scene_importer.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_replay_service.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/replay_backend_c.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/case_orchestrator/case_orchestrator.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/compact_geometry_wire.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_guide_line.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profile_collectors.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/load_snap_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/generated/scenario_task_chains.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/lattice.yaml"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/scaffold_mapping.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/live_compressed_frame_ingress.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/batch_regression_runner_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/check_custom_encoders.py"
            },
            {
              "editType" : "add",
              "file" : "proto/decision.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/proto_http_router.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/dp.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_build_boundaries.py"
            },
            {
              "editType" : "add",
              "file" : "Testing/legacy_scene_importer_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/data_path_compact.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/scene_replay_service_handler.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/trajectory.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertions/lateral_path.yaml"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_debug_layer.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_status.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_profile_loader.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/regression_report_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/container_compensate_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_replay_proto.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_static.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compatibility_registry.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/report_artifact_bundle_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/traffic_light_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/keb_production_async.yaml"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_hmi_taxonomy_lint.py"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_recorded_result.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_geometry_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/common.proto"
            },
            {
              "editType" : "add",
              "file" : ".vscode/tasks.json"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/experiment_parameter_patch.proto"
            },
            {
              "editType" : "add",
              "file" : "Testing/load_snap_data_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/guide_path.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/keb.yaml"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_planning_layer.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_state.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_geometry_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_case/pnc_case_main.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/map_provider.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compatibility_gateway.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/config/cfg_hmi_layer_mapping.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/case_orchestrator/pnc_case_cli.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_task_chains.py"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cloud_lane_change_status.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ctrl/ctrl_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/replayer_data_process_adapter.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/compact_scene_service_handler.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/stage_task_replay_engine.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/regression_report.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertions/common.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/candidate_frame_builder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/ogm_crash_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/config/analysis_server.lsg.proto_bag.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/README.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/replay_backend_c.h"
            },
            {
              "editType" : "add",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/production_variant_runner.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_geometry.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/config/analysis_server.example.yaml"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/scenario.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/scenario_supervise.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_replay_web_page.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/vehicle_state_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/compact_scene_service_handler.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/reference_line_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/recorded_frame_pipeline.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/baseline/compact_scene_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/batch_regression_runner.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/compact_geometry_wire.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/scene_payload_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/payload_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/baseline/plan_frame_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "Testing/experiment_session_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/proto_http_router.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_live_bridge/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_replay_session.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/case_orchestrator/case_orchestrator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/veh_his_states.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/scene_payload.proto"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/recorded_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/sync_container_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lock_station_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/README.md"
            },
            {
              "editType" : "add",
              "file" : "proto/obstacle_compact.proto"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_scene_importer/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_scene.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/map_provider.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/report_artifact_bundle.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/planframe_compat.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/async_generation_guard.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_replay_backend/ensure_ros_master.sh"
            },
            {
              "editType" : "add",
              "file" : "Testing/experiment_analysis_coordinator_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/road_segments.h"
            },
            {
              "editType" : "add",
              "file" : "proto/map_data.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/tagfs/tagfs_clients.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/scenario.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compressed_frame_chunk.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/analysis_server_app.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/experiment_session.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/envelop/map_envelops.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/trajectory_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "launch/replay/regression_task.launch"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_input_layer.proto"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/import_full_schema_mapping.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_replay_service.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/production_variant_runner.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_replay_backend/publish_bundle.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/obstacle_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/regression_task_api_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/versioned_compact_decoder.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/replay_v15.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/tagfs/tagfs_adapter.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/side_pass_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lock_station_pts.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/execution_profile_registry.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/vehicle_state_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/execution_profile_registry.hpp"
            },
            {
              "editType" : "edit",
              "file" : "core/snapshot_async.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/other/flow_control.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cmd_feedback_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/stage_task_replay_engine.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/stage.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm_interface.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compressed_scene_payload.proto"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/reaction/app_reaction.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/generated_variant_config_patch.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/planframe_compat_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/priori_bay_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/full_schema_lint.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/compressed_frame_ring_buffer.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_manifest.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_plan_frame_fields.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/vehicle_input_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/recorded_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_importer/legacy_scene_importer.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/start_point_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ctrl/lka_start_up.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_scene_archive_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/hmi_layer_catalog.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/state_schema_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/generated_variant_config_patch.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/tagfs/tagfs_adapter.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/bag_to_keb_scene.cc"
            },
            {
              "editType" : "edit",
              "file" : "proto/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_replay_session.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/scene_channel_wire_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/scene_channel_wire.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/scene_channel.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/planframe_compat.cpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_snapshot_compact_scene.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_proto_only_lint.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/keb_lane_follow.yaml"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/lane_follow_scenario/lane_follow_stage.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_mapping_scaffold.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/experiment_session.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/scenario.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/config/live_bridge.example.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/tagfs/tagfs_clients.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lane_detection.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/replay_history.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/analysis_server_app.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compatibility_gateway.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/yard_occupy_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/trajectory_compact.proto"
            },
            {
              "editType" : "add",
              "file" : "scenarios/task_execution_policy.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/linear_velocity_generator_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-lane-follow.yaml"
            },
            {
              "editType" : "add",
              "file" : "Testing/generated_variant_config_patch_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/beast_analysis_server.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/road_segments.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/into_yard_junction_scenario/into_yard_junction_first_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/stage.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/proto_bag_scene_builder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_engine.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/analysis_server_app_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compatibility_registry_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/app_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-ssep.yaml"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/scenario_supervise.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/recorded_frame_pipeline.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/hmi_layer_manifest.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/legacy_location_repair.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_bundle_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/legacy_location_repair.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_regression_task/pnc_regression_task_main.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/sync_state_schema.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertion_pack_registry.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/proto_bag_scene_builder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "common/util/hdmap_wrapper.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/longitude_constrain_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertions/dp_reverse_meeting.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_replay_session_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/scene_bundle_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_mapping_contract.py"
            },
            {
              "editType" : "add",
              "file" : "Testing/pnc_case_cli_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_recorded_debug.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/regression_report.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/vehicle.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertions/longitudinal_trajectory.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/report_artifact_bundle.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/scene_payload_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/live_compact_frame.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/wbca.yaml"
            },
            {
              "editType" : "add",
              "file" : "Testing/case_orchestrator_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/ssep_compact.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/spreader_protect.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/linear_velocity_generator.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/pjpo.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/task_factory.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/scene_replay_service_handler.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/case_orchestrator/pnc_case_cli.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/hmi_taxonomy_lint.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_analysis_server/pnc_analysis_server_main.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/beast_analysis_server_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_direction_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/profile_collectors_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/schema_lint.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/sync_trajectory_schema.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/experiment_analysis_coordinator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_lane_constrain.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/analysis_server/beast_analysis_server.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/schema_v1_decisions.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/hmi_layer_catalog.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/pnc_map_reflection_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/config_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/payload_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/examples/pnc_case_promote/request-production-async.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/live_compact_ingress.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_bag_to_scene/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/encoding_benchmark.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/live_compressed_frame_ingress.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_replay/compressed_frame_ring_buffer.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/compact_proto_boost_removal.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/protos/params.proto",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "ssep/protos/ssep_scenario_type.proto",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "ssep/protos/path.proto",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "ssep/protos/object.proto",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "ssep/protos/scene.proto",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "2d7664732b48998ab378500f24b18c28d3e6422d",
          "timestamp" : 1787494586000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "chore: 清理回放 Proto 合同格式\u000a\u000a移除 SSEP Proto 中的尾随空白和文件末尾冗余空行，并同步刷新自动生成的 codec schema 标识与 descriptor，保证独立平台首次提交通过 diff 检查。\u000a",
          "date" : "2026-08-23 22:16:26 +0800",
          "id" : "2d7664732b48998ab378500f24b18c28d3e6422d",
          "msg" : "chore: 清理回放 Proto 合同格式",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/protos/ssep_scenario_type.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/params.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/scene.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/object.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/path.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "docs/pnc_algorithm_replay/proto_generation.md",
            "AGENTS.md",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
          ],
          "commitId" : "543a6afa4446906c89fc01de2a1e00ce530339eb",
          "timestamp" : 1787497843000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 明确 PlanFrame 字段与压缩维护流程\u000a\u000a新增字段保存决策、Full/Compact 映射、量化精度、自动生成、测试与发布操作手册。\\n\\n补充 Compact Proto 到 PlanFrame、ReplayerDataProcess 和诊断 SDK 的完整恢复链路及排障表，并将规范加入 AGENTS 协作约束。\\n\\n修正文档中 Full Proto decoder 是否自动生成的矛盾说明。\u000a",
          "date" : "2026-08-23 23:10:43 +0800",
          "id" : "543a6afa4446906c89fc01de2a1e00ce530339eb",
          "msg" : "docs: 明确 PlanFrame 字段与压缩维护流程",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "edit",
              "file" : "AGENTS.md"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "proto/scene_replay_api.proto",
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "replayer/live_bridge/live_scene_service_handler.cpp",
            "Testing/beast_analysis_server_test.cpp",
            "replayer/live_bridge/pnc_live_bridge_app.hpp",
            "Testing/live_bridge_app_test.cpp",
            "replayer/live_bridge/pnc_live_web_bridge.hpp",
            "replayer/live_bridge/live_map_runtime.hpp",
            "replayer/live_bridge/live_scene_service_handler.hpp",
            "replayer/live_bridge/pnc_live_web_bridge.cpp",
            "replayer/live_bridge/live_map_runtime.cpp",
            "replayer/analysis_server/proto_http_router.cpp",
            "replayer/live_bridge/config/live_bridge.example.yaml",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/analysis_server/proto_http_router.hpp"
          ],
          "commitId" : "17a69428c8ca7a2728ee5461c81a136abacb57c5",
          "timestamp" : 1787552491000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持回放服务运行时加载地图\u000a\u000aLive Bridge 与 Proto Bag Server 允许省略启动地图配置，无地图时继续提供车辆、障碍物、OGM、路径和轨迹数据。\\n\\n新增 binary Proto 地图配置接口，前端可提交地图路径和逻辑 ID；接口配置为空时统一使用 /opt/senior/install/share/hdmap_interface/params/hdmap_interface.yaml。\\n\\n地图加载失败不再阻断非地图帧，并为离线 bag 缓存帧主动重发地图图层。\u000a",
          "date" : "2026-08-24 14:21:31 +0800",
          "id" : "17a69428c8ca7a2728ee5461c81a136abacb57c5",
          "msg" : "feat: 支持回放服务运行时加载地图",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/config/live_bridge.example.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/live_map_runtime.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/live_map_runtime.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/beast_analysis_server_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/scene_replay_api.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_bag_server/main.cpp",
            "Testing/live_bridge_app_test.cpp",
            "proto/scene_replay_api.proto",
            ".vscode/launch.json",
            "replayer/live_bridge/live_scene_service_handler.hpp",
            "replayer/live_bridge/live_scene_service_handler.cpp",
            "replayer/analysis_server/proto_http_router.cpp",
            "replayer/live_bridge/bag_upload_session.hpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/live_bridge/bag_upload_session.cpp",
            "replayer/analysis_server/proto_http_router.hpp"
          ],
          "commitId" : "1b80e9fca5a0aa21eb3afdb9b06021c96815dddd",
          "timestamp" : 1787553168000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持网页拖拽打开 Proto bag\u000a\u000aProto Bag Server 允许不传 --bag 空载启动，并提供有界 binary Proto 分块上传接口。\\n\\n浏览器上传按连续 offset 写入受控临时文件，完成后校验 rosbag 与当前 backend runtime/schema，再加载到独立 Replay Session；整包不会进入内存或使用 JSON/base64。\\n\\n保留命令行直接打开 bag 的原有方式，并补充分块、大小、临时文件清理和版本拒绝测试。\u000a",
          "date" : "2026-08-24 14:32:48 +0800",
          "id" : "1b80e9fca5a0aa21eb3afdb9b06021c96815dddd",
          "msg" : "feat: 支持网页拖拽打开 Proto bag",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "proto/scene_replay_api.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.cpp"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/bag_upload_session.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/live_bridge/bag_upload_session.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt"
          ],
          "commitId" : "57792b9620d5ac60b58c6811a81cb3cb9a806f29",
          "timestamp" : 1787553269000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 固化拖拽 Bag Server 的运行时版本\u000a\u000a为 pnc_proto_bag_server 注入与 backend 一致的 PNC version/commit，使空载启动后上传的 bag 能执行精确 runtime/schema 校验。\u000a",
          "date" : "2026-08-24 14:34:29 +0800",
          "id" : "57792b9620d5ac60b58c6811a81cb3cb9a806f29",
          "msg" : "fix: 固化拖拽 Bag Server 的运行时版本",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt"
          ],
          "commitId" : "eacc88be0b91aa605e4b2932c9cf233a11906657",
          "timestamp" : 1787553296000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补齐 PlanFrame SDK 版本身份\u000a\u000a为 exact-version planframe compatibility SDK 注入 PNC version/commit，避免 CurrentPlanFrameCompatContract 返回 unknown。\u000a",
          "date" : "2026-08-24 14:34:56 +0800",
          "id" : "eacc88be0b91aa605e4b2932c9cf233a11906657",
          "msg" : "fix: 补齐 PlanFrame SDK 版本身份",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_replay_backend/publish_bundle.py"
          ],
          "commitId" : "0cf8a38a0169529ec81d2b423944fee60a13819a",
          "timestamp" : 1787553487000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 将 Proto Bag Server 纳入 OTA bundle\u000a\u000a随算法 backend 发布支持空载与网页拖拽的 pnc-proto-bag-server，避免部署环境依赖 PNC worktree 构建目录。\u000a",
          "date" : "2026-08-24 14:38:07 +0800",
          "id" : "0cf8a38a0169529ec81d2b423944fee60a13819a",
          "msg" : "feat: 将 Proto Bag Server 纳入 OTA bundle",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_replay_backend/publish_bundle.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_bag_server/main.cpp"
          ],
          "commitId" : "a144665d473e121ffb3130d80f4c557a9ea1db98",
          "timestamp" : 1787555057000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留直接回放 Bag 的完整时间轴\u000a\u000aProto Bag Server 使用最多 20000 帧的离线有界缓存并关闭 Live 时间淘汰，避免长于 60 秒的 bag 丢失开头帧。\u000a",
          "date" : "2026-08-24 15:04:17 +0800",
          "id" : "a144665d473e121ffb3130d80f4c557a9ea1db98",
          "msg" : "fix: 保留直接回放 Bag 的完整时间轴",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "tools/pnc_proto_bag_server/main.cpp",
            "Testing/live_bridge_app_test.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "3c433b5a877a5a26f37f77ff45aee12f1488b984",
          "timestamp" : 1787555462000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按结构合同校验拖拽 Bag\u000a\u000a空载 Proto Bag Server 从上传 bag 采用 source version/commit，仅对 RDP contract、Compact schema 和 encoding 保持严格匹配。\\n\\nLive ROS 模式仍要求显式且精确的 source identity，避免纯工具提交导致刚录制的兼容 bag 无法打开。\u000a",
          "date" : "2026-08-24 15:11:02 +0800",
          "id" : "3c433b5a877a5a26f37f77ff45aee12f1488b984",
          "msg" : "fix: 按结构合同校验拖拽 Bag",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/test_draft_persistence_policy.py",
            "replayer/scene_data/compact_proto_codec.hpp",
            "Testing/legacy_scene_importer_test.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "CMakeLists.txt",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "tools/pnc_proto_bag_to_scene/main.cpp",
            "tools/pnc_proto_mapper/test_audit_boost_nested_serialization.py",
            "replayer/scene_data/compatibility_registry.cpp",
            "replayer/algorithm_replay/production_variant_runner.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "Testing/live_bridge_app_test.cpp",
            "replayer/scene_data/generated/boost_nested_serialization_audit.yaml",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "data/constrain/temporary_stop_data.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/pnc_scene/compact_replay_input.proto",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "Taskfile.yml",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "Testing/encoding_benchmark_test.cpp",
            "tools/pnc_proto_mapper/audit_boost_nested_serialization.py",
            "tools/pnc_proto_mapper/test_plan_frame_persistence_catalog.py",
            "tasks/deciders/long_decider/time_path_graph_decider.cpp",
            "replayer/analysis_server/config/analysis_server.lsg.proto_bag.yaml",
            "proto/pnc_scene/compact_guide_line.proto",
            "tools/pnc_proto_bag_server/main.cpp",
            "replayer/scene_data/encoding_benchmark.cpp",
            "data/constrain/disable_stop_range.hpp",
            "Testing/compatibility_registry_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "proto/pnc_scene/full_plan_frame.proto",
            "replayer/scene_data/generated/boost_nested_leaf_matrix.csv",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/compact_proto_codec.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "proto/plan_data.proto",
            "Testing/pnc_case_cli_test.cpp",
            "docs/pnc_algorithm_replay/schema_v1_decisions.md",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "docs/pnc_algorithm_replay/proto_generation.md",
            "replayer/scene_data/encoding_benchmark.hpp",
            "data/ssep/online_region_contour_creator_test.cpp",
            "replayer/scene_data/compatibility_gateway.hpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/boost_nested_omitted_leaves.csv",
            "tools/pnc_proto_mapper/test_encoding_v3_baseline.py",
            "Testing/pnc_map_reflection_test.cpp",
            "data/constrain/temporary_stop_data.cpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "replayer/analysis_server/config/analysis_server.example.yaml",
            "replayer/live_bridge/config/live_bridge.example.yaml",
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "tools/pnc_proto_mapper/draft_persistence_policy.py",
            "tools/pnc_proto_mapper/generate_plan_frame_persistence_catalog.py",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/encoding_v3_bandwidth_baseline.yaml",
            "replayer/scene_data/generated/boost_compact_persistence_diff.yaml",
            "proto/pnc_scene/compact_recorded_result.proto",
            "scenarios/stage.cpp",
            "tools/pnc_proto_mapper/generator.py",
            "replayer/scene_data/plan_frame_nested_persistence_review.yaml",
            "proto/vehicle.proto",
            "replayer/scene_data/vehicle_state_proto_codec.cpp",
            "docs/pnc_algorithm_replay/usage.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "Testing/analysis_server_app_test.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "data/map/reference/reference_road_section.hpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "offboard/bag_to_keb_scene/CMakeLists.txt"
          ],
          "commitId" : "7c978c079fdfe68cf6bc3b5145d0b705be58847d",
          "timestamp" : 1787624566000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 冻结场景回放 encoding v3 基线\u000a\u000a完成 PlanFrame Full/Compact Proto 自动生成与持久化审计，冻结 Boost v15 迁移证据和 encoding v3 带宽基线。\u000a\u000aGuideLine 仅保留 mode 与 StartPointData，ReferenceLine 使用车体坐标 uint16；raw reference、junction、CenterLine、历史路径轨迹和 SSEP corridor 由回放链路确定性重建。\u000a\u000a补齐 BlockData、VehicleState、PncLocalMap 索引恢复，修复 Proto bag 前导 Delta、全量构建链接、Compatibility Registry、Task 异常和 PathTimeGraph 空指针问题。\u000a\u000a更新 Live/Bag/replayer 使用文档、OTA 合同与完整回归/带宽工具。\u000a",
          "date" : "2026-08-25 10:22:46 +0800",
          "id" : "7c978c079fdfe68cf6bc3b5145d0b705be58847d",
          "msg" : "feat: 冻结场景回放 encoding v3 基线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/vehicle_state_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/boost_nested_leaf_matrix.csv"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/schema_v1_decisions.md"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/online_region_contour_creator_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compatibility_registry.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/config/analysis_server.example.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_plan_frame_persistence_catalog.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/plan_frame_nested_persistence_review.yaml"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/generate_plan_frame_persistence_catalog.py"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/full_plan_frame.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/legacy_scene_importer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/config/live_bridge.example.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/pnc_map_reflection_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/vehicle.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/analysis_server_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/compatibility_registry_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/boost_nested_omitted_leaves.csv"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/boost_nested_serialization_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/draft_persistence_policy.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/encoding_v3_bandwidth_baseline.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_guide_line.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/algorithm_replay/production_variant_runner.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_recorded_result.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_boost_nested_serialization.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/pnc_case_cli_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compatibility_gateway.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_to_scene/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_encoding_v3_baseline.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/boost_compact_persistence_diff.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/config/analysis_server.lsg.proto_bag.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_audit_boost_nested_serialization.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_draft_persistence_policy.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/time_path_graph_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/usage.md",
            ".vscode/launch.json",
            "tools/pnc_proto_bag_server/main.cpp"
          ],
          "commitId" : "edfdfbbc033baea804605dbc473e5df76ea3062a",
          "timestamp" : 1787626642000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 简化离线 bag 服务地图配置\u000a\u000aProto Bag Server 默认使用内置离线服务配置并自动定位 PlanFrame descriptor，不再要求传入 Live YAML。\\n\\n服务启动时强制忽略 YAML 中的地图路径，由 bag Anchor 提供地图标识、网页按需配置主机地图；同步更新 VS Code 启动项和使用文档。\u000a",
          "date" : "2026-08-25 10:57:22 +0800",
          "id" : "edfdfbbc033baea804605dbc473e5df76ea3062a",
          "msg" : "fix: 简化离线 bag 服务地图配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/live_bridge/pnc_live_bridge_app.hpp",
            "tools/pnc_proto_bag_server/main.cpp",
            "tools/pnc_live_bridge/main.cpp",
            "Testing/live_bridge_app_test.cpp",
            ".vscode/launch.json",
            "docs/pnc_algorithm_replay/usage.md",
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "dd7adad45f010a552e8833702b9d2fc068042af4",
          "timestamp" : 1787628336000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持 Live Bridge 零配置启动\u000a\u000aLive Bridge 默认内置 mapless 本地配置，自动采用当前 PNC runtime/schema/encoding 合同并定位 PlanFrame descriptor。\\n\\n保留 --config 及 bind、port、topic 覆盖能力；复用同一默认配置简化 Proto Bag Server，并同步 VS Code 启动项、回归测试和使用文档。\u000a",
          "date" : "2026-08-25 11:25:36 +0800",
          "id" : "dd7adad45f010a552e8833702b9d2fc068042af4",
          "msg" : "feat: 支持 Live Bridge 零配置启动",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_live_bridge/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/usage.md",
            ".vscode/launch.json"
          ],
          "commitId" : "96f4f01f3f9348d724c8861202430b7475581cfc",
          "timestamp" : 1787630677000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 统一回放服务零参数入口\u000a\u000a补充 Live Bridge 与 Proto Bag Server 的零 YAML 命令、显式配置覆盖、端口冲突和直接开 bag 示例。\\n\\n将 VS Code Bag Server launch 拆为零参数空会话与启动时直接打开 bag 两个入口，避免要求用户输入空路径。\u000a",
          "date" : "2026-08-25 12:04:37 +0800",
          "id" : "96f4f01f3f9348d724c8861202430b7475581cfc",
          "msg" : "docs: 统一回放服务零参数入口",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/usage.md",
            "replayer/live_bridge/live_map_runtime.cpp",
            "Testing/live_bridge_app_test.cpp",
            "replayer/scene_data/map_provider.cpp"
          ],
          "commitId" : "bb50c3eb8e4cd972ecd12a13d6ae6c61d2d76424",
          "timestamp" : 1787637735000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 支持网页按地图包目录加载地图\u000a\u000aLive Bridge 接受地图 JSON 或包含唯一 map_*.json 的地图包目录，并继续严格校验 Anchor logical ID、district/version 与 SHA256。\\n\\n地图不匹配错误补充期望 logical ID，新增目录解析回归测试并更新使用文档。\u000a",
          "date" : "2026-08-25 14:02:15 +0800",
          "id" : "bb50c3eb8e4cd972ecd12a13d6ae6c61d2d76424",
          "msg" : "fix: 支持网页按地图包目录加载地图",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_map_runtime.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/map_provider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/live_bridge/pnc_live_bridge_app.hpp",
            "Testing/live_bridge_app_test.cpp",
            "replayer/live_bridge/live_map_runtime.hpp",
            "proto/scene_replay_api.proto",
            "replayer/live_bridge/live_scene_service_handler.hpp",
            "replayer/live_bridge/live_scene_service_handler.cpp",
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "replayer/live_bridge/live_map_runtime.cpp",
            "replayer/analysis_server/proto_http_router.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/analysis_server/proto_http_router.hpp"
          ],
          "commitId" : "ddeab18ea19e4471b10d2a703a3b77e2d4da516b",
          "timestamp" : 1787638857000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 提供受限地图文件浏览接口\u000a\u000a新增 binary Proto 地图目录浏览端点，默认仅允许访问 /home/senior/maps 及其子目录，并阻止路径越界。返回目录、map_*.json 与可选地图包信息，供 Web 文件选择器使用。\u000a",
          "date" : "2026-08-25 14:20:57 +0800",
          "id" : "ddeab18ea19e4471b10d2a703a3b77e2d4da516b",
          "msg" : "feat: 提供受限地图文件浏览接口",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_map_runtime.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/scene_replay_api.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/proto_http_router.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_map_runtime.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tools/pnc_proto_mapper/audit_compact_inherited_containers.py",
            "data/boundary/road_boundary.hpp",
            "Testing/assertion_pack_registry_test.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "CMakeLists.txt",
            "replayer/scene_data/debug_visualization_replay_contract.yaml",
            "replayer/scene_data/full_proto_custom_encoder.hpp",
            "replayer/algorithm_replay/production_variant_runner.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "replayer/analysis_server/scene_channel_wire.cpp",
            "proto/decision.proto",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/pnc_scene/compact_replay_input.proto",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "replayer/algorithm_replay/profiles/debug_keb.yaml",
            "replayer/scene_data/config_proto_codec.cpp",
            "Taskfile.yml",
            "Testing/encoding_benchmark_test.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "proto/pnc_scene/compact_recorded_debug.proto",
            "data/wbca/wbca_data.hpp",
            "replayer/scene_data/obstacle_proto_codec.hpp",
            "proto/pnc_scene/compact_guide_line.proto",
            "common/util/thr_helper.hpp",
            "tasks/plan/keb_utils.cpp",
            "proto/map_data.proto",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/remaining_plan_proto_codec.hpp",
            "proto/pnc_scene/full_plan_frame.proto",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/compact_proto_codec.cpp",
            "tasks/plan/keb_lane_follow_path_task.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "tools/pnc_proto_mapper/audit_compact_nested_boost_contract.py",
            "proto/plan_data.proto",
            "replayer/scene_data/full_custom_codec_exclusions.yaml",
            "data/app/fsm/task_done_verification.hpp",
            "tasks/plan/keb_path_optimize_task.cpp",
            "docs/pnc_algorithm_replay/proto_generation.md",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "tools/pnc_proto_mapper/sync_trajectory_schema.py",
            "data/boundary/driving_corridor.hpp",
            "data/map/reference/reference_segment.hpp",
            "replayer/scene_data/compact_nested_boost_contracts.yaml",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/trajectory_schema_inputs.json",
            "tools/pnc_proto_mapper/audit_full_custom_codecs.py",
            "Testing/pnc_map_reflection_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "data/plan/path_data.hpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "replayer/algorithm_replay/assertions/debug_observation.yaml",
            "tools/pnc_proto_mapper/audit_debug_replay_contract.py",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/compact_inherited_container_contracts.yaml",
            "Testing/scene_channel_wire_test.cpp",
            "replayer/analysis_server/compact_geometry_wire.cpp",
            "proto/trajectory.proto",
            "data/config/cfg_dynamic.hpp",
            "data/vehicle/vehicle_state.hpp",
            "replayer/scene_data/plan_frame_nested_persistence_review.yaml",
            "tasks/plan/keb_utils.hpp",
            "docs/pnc_algorithm_replay/usage.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "replayer/scene_data/generated/state_schema_inputs.json",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "data/map/reference/reference_road_section.hpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "810eb76c74b62be8820ea2acf2098aae22573f43",
          "timestamp" : 1788334807000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善场景回放数据合同与调试重建\u000a\u000a补齐 PlanFrame Full/Compact 的配置、地图、路径、障碍物与跨帧状态强类型编解码，并为重几何采用车体坐标量化与外层 Zstd。\u000a\u000a新增 Full custom codec、继承容器、嵌套 Boost 和高级调试回放合同审计，保留冻结 Proto 字段号及旧消息兼容 tombstone。\u000a\u000a支持 KEB/Lattice 等调试图层从 canonical 输入确定性重建，补充字段覆盖、精度、隔离、带宽和回放回归测试。\u000a",
          "date" : "2026-09-02 15:40:07 +0800",
          "id" : "810eb76c74b62be8820ea2acf2098aae22573f43",
          "msg" : "feat: 完善场景回放数据合同与调试重建",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/algorithm_replay/production_variant_runner.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_trajectory_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/full_custom_codec_exclusions.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/assertion_pack_registry_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/compact_geometry_wire.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_debug_replay_contract.py"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_segment.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/debug_visualization_replay_contract.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_done_verification.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_guide_line.proto"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_compact_inherited_containers.py"
            },
            {
              "editType" : "edit",
              "file" : "proto/trajectory.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/assertions/debug_observation.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_nested_boost_contracts.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/trajectory_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_nested_persistence_review.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/full_plan_frame.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/decision.proto"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "common/util/thr_helper.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/state_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/wbca_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_dynamic.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_recorded_debug.proto"
            },
            {
              "editType" : "edit",
              "file" : "proto/map_data.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_channel_wire_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_full_custom_codecs.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/pnc_map_reflection_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/algorithm_replay/profiles/debug_keb.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/analysis_server/scene_channel_wire.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_inherited_container_contracts.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_lane_follow_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_compact_nested_boost_contract.py"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/road_boundary.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            ".vscode/tasks.json",
            "Testing/live_bridge_app_test.cpp",
            "replayer/live_bridge/pnc_live_web_bridge.hpp",
            "tools/pnc_regression_task/pnc_regression_task_main.cpp",
            ".vscode/launch.json",
            "replayer/live_bridge/live_scene_service_handler.cpp",
            "replayer/live_bridge/pnc_live_bridge_app.cpp",
            "replayer/live_bridge/pnc_live_web_bridge.cpp",
            "tools/pnc_analysis_server/pnc_analysis_server_main.cpp",
            "Testing/live_web_bridge_test.cpp"
          ],
          "commitId" : "a557ee4cb96deba17c4f3d1da013b1a72da1ac9a",
          "timestamp" : 1788334853000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善 Live 回放按需观测链路\u000a\u000a保留浏览器选中的 Live 帧及其历史，使滚动缓存淘汰后仍可生成 FullFrame，并在按需请求时重建 Compact 中省略的观察字段。\u000a\u000a为 Analysis Server 和回归任务补齐正常 ROS 生命周期，更新调试启动任务并覆盖选帧、无地图降级与持续采集回归。\u000a",
          "date" : "2026-09-02 15:40:53 +0800",
          "id" : "a557ee4cb96deba17c4f3d1da013b1a72da1ac9a",
          "msg" : "feat: 完善 Live 回放按需观测链路",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/live_web_bridge_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_scene_service_handler.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_analysis_server/pnc_analysis_server_main.cpp"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_regression_task/pnc_regression_task_main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_bridge_app.cpp"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/tasks.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/logic.hpp",
            "replayer/main.cpp",
            "replayer/replayer_data_process/load_snap_data.cpp",
            "replayer/logic.cpp",
            "hmi/replayer_hmi.cpp"
          ],
          "commitId" : "2162e2df544d9582ce4d1f1b8423194d9142d66d",
          "timestamp" : 1788334918000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复 Replayer 实时模式卡顿与状态竞争\u000a\u000a将实时模式切换请求交由工作线程应用，缩短帧队列锁持有时间并修正播放索引上报和边界处理。\u000a\u000a在丢弃重入 UI 更新时及时释放生产者背压，补充 realtime 启动参数，并按实际加载类型报告地图与快照状态。\u000a",
          "date" : "2026-09-02 15:41:58 +0800",
          "id" : "2162e2df544d9582ce4d1f1b8423194d9142d66d",
          "msg" : "fix: 修复 Replayer 实时模式卡顿与状态竞争",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/replayer_hmi.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/load_snap_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/widget/player.hpp",
            "Testing/scene_replay_foundation_test.cpp",
            "source/ros_source_replayer_snapshot.cpp",
            "source/ros_source_replayer_snapshot.hpp",
            "Taskfile.yml",
            "hmi/widget/player.cpp",
            "replayer/logic.cpp"
          ],
          "commitId" : "283c9fc9112dddbbbead9e26f929e2f08cb2f659",
          "timestamp" : 1788345702000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 避免实时回放插入解码失败空帧\u000a\u000a实时快照只有在 Compact 或旧格式完整解码成功后才进入播放队列，sequence gap 等失败不再产生零位姿 PlanFrame，从而消除界面闪空帧和后续 OpenCV 重建异常。\u000a\u000a统一播放器时间格式化并处理零时间、毫秒进位和 localtime 失败，避免切换或退出阶段对短字符串执行 substr 导致崩溃。\u000a\u000a增加本地 Replayer 构建入口和时间格式回归测试，并使用 2026-09-02-18-21-39.bag 完成实时播放验证。\u000a",
          "date" : "2026-09-02 18:41:42 +0800",
          "id" : "283c9fc9112dddbbbead9e26f929e2f08cb2f659",
          "msg" : "fix: 避免实时回放插入解码失败空帧",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/player.hpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/player.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.cpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "Testing/scene_replay_foundation_test.cpp"
          ],
          "commitId" : "117b9bd75b69187ad1a289cc3bbb42384c28f53c",
          "timestamp" : 1788349127000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加回放数据处理分步耗时统计\u000a\u000a为 ReplayerDataProcess 各重建阶段增加基于 steady_clock 的具名耗时指标，并写入现有 plan_diagnose_ 性能面板数据源。\\n\\n每轮处理前清理旧的 RDP 指标，确保条件步骤关闭后不会显示历史值；作用域计时覆盖提前返回和异常路径。补充回归测试验证总耗时、关键阶段和旧指标清理。\u000a",
          "date" : "2026-09-02 19:38:47 +0800",
          "id" : "117b9bd75b69187ad1a289cc3bbb42384c28f53c",
          "msg" : "feat: 增加回放数据处理分步耗时统计",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "sink/ros_sink_snapshot_compact_scene.hpp",
            "tools/pnc_proto_mapper/proto_only_lint.py",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "sink/ros_sink_snapshot_compact_scene.cpp",
            "tools/pnc_proto_mapper/test_proto_only_lint.py",
            "Testing/scene_replay_foundation_test.cpp",
            "source/ros_source_replayer_snapshot.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/replayer_data_process/replayer_computation_policy.hpp",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "replayer/logic.cpp"
          ],
          "commitId" : "274c1f88d47433836aeff90bad764e47676c06e1",
          "timestamp" : 1788352981000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复实时回放两秒跳帧与无效重算\u000a\u000a实时订阅按队列顺序推进 Compact decoder，仅将最新完整帧交给重建和界面，避免丢失 delta 后等待 20 帧 anchor；无新帧时停止重复刷新和重建。\\n\\n新增 ReplayerComputationPolicy，按 HMI 勾选状态分别控制 OGM 线、预测碰撞、Path-Time Graph、OGM 碰撞、Driving Passage、KEB 等高耗时计算，并恢复 process_path_time_graph 参数的正确语义。\\n\\n新实时 writer 每帧携带 common/bootstrap 且不依赖 history，保证单帧可独立解析；补充静态合同、空历史回退、队列消费和策略映射测试。\u000a",
          "date" : "2026-09-02 20:43:01 +0800",
          "id" : "274c1f88d47433836aeff90bad764e47676c06e1",
          "msg" : "fix: 修复实时回放两秒跳帧与无效重算",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/replayer_data_process/replayer_computation_policy.hpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_snapshot_compact_scene.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.cpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_snapshot_compact_scene.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/live_compact_context_codec.hpp",
            "tools/pnc_proto_mapper/proto_only_lint.py",
            "Testing/planframe_compat_test.cpp",
            "replayer/sdk/planframe_compat.cpp",
            "proto/pnc_scene/live_compact_frame.proto",
            "replayer/scene_data/proto_bag_scene_builder.cpp",
            "replayer/scene_data/live_compact_context_codec.cpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.cpp",
            "CMakeLists.txt",
            "tools/pnc_proto_bag_to_scene/main.cpp",
            "replayer/scene_data/live_compact_ingress.cpp",
            "tools/pnc_proto_bag_server/main.cpp",
            "tools/pnc_proto_mapper/test_proto_only_lint.py",
            "sink/ros_sink_snapshot_compact_scene.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/live_bridge/pnc_live_web_bridge.cpp"
          ],
          "commitId" : "3a4cd5022ccb8a79c45ce382f65385ae26977cf1",
          "timestamp" : 1788355313000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 压缩实时回放公共与启动上下文\u000a\u000a新增 v2 Live Compact envelope，将每帧自包含的 SceneCommon 和 SceneBootstrap 合并为 Zstd context payload，避免未压缩上下文导致实时带宽翻倍。\u000a\u000a解码端、Live Bridge、bag 转换和 SDK 继续兼容 v1 裸上下文；补充协议边界、失败不污染状态、单帧解码和带宽统计验证。\u000a",
          "date" : "2026-09-02 21:21:53 +0800",
          "id" : "3a4cd5022ccb8a79c45ce382f65385ae26977cf1",
          "msg" : "fix: 压缩实时回放公共与启动上下文",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_server/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/sdk/planframe_compat.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/live_compact_frame.proto"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_bag_to_scene/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/proto_bag_scene_builder.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/live_compact_context_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/planframe_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/live_compact_context_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/live_compact_ingress.cpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_snapshot_compact_scene.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "tools/pnc_proto_mapper/generator.py",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "data/plan/smooth_data.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/remaining_plan_proto_codec.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "7dae66f67d8e40f5cd7d3a5837483f348f5ab293",
          "timestamp" : 1788358352000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 精简实时回放平滑启动状态\u000a\u000a将 SmoothData 的当帧 discretized_path 和 anchor_pts 从 Compact Bootstrap 中移除，仅保留平滑判定所需跨帧状态；Full Proto 继续完整保存观察数据，旧 Compact 数据保持兼容读取。\u000a\u000a补充 Bootstrap 字段带宽统计与 Full/Compact 边界测试，实测单帧从 53.53 KB 降至 31.36 KB。\u000a",
          "date" : "2026-09-02 22:12:32 +0800",
          "id" : "7dae66f67d8e40f5cd7d3a5837483f348f5ab293",
          "msg" : "perf: 精简实时回放平滑启动状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/smooth_data.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/remaining_plan_proto_codec.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "66ac64440010c5e64461e7852c88f2a1c1eb4014",
          "timestamp" : 1788401106000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 收紧回放公共与启动状态边界\u000a\u000a复查 Common 与 Bootstrap 字段用途，为带宽工具补充两类上下文的字段级统计。\u000a\u000aSwitchData Compact 仅保留下一帧会复用的换道路径，排除只供 HMI 展示的 OGM 和障碍物安全区域；Full Proto 保持完整观察数据。\u000a",
          "date" : "2026-09-03 10:05:06 +0800",
          "id" : "66ac64440010c5e64461e7852c88f2a1c1eb4014",
          "msg" : "fix: 收紧回放公共与启动状态边界",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_encoding_benchmark/main.cpp",
            "replayer/scene_data/compact_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "tools/pnc_proto_mapper/proto_only_lint.py",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/scene_data/encoding_benchmark.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "tools/pnc_proto_mapper/test_proto_only_lint.py",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "0880db33c3fdab37950dccb1909dbcda3eee795a",
          "timestamp" : 1788403090000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 精简 SSEP 回放中间状态\u000a\u000aCompact 不再保存可由 search/smooth path 重建的 ssep_path，并排除 SsepEC online/offline region 构造中间轮廓；最终 plan_region_contour 与下游直接消费的约束几何保持不变。\u000a\u000a新增 SSEP 字段级带宽统计和 *_srl_ 镜像读取门禁。最新实录重编码后从 41.61 KB/帧降至 37.34 KB/帧。\u000a",
          "date" : "2026-09-03 10:38:10 +0800",
          "id" : "0880db33c3fdab37950dccb1909dbcda3eee795a",
          "msg" : "perf: 精简 SSEP 回放中间状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/usage.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "replayer/scene_data/encoding_v3_bandwidth_baseline.yaml",
            "docs/pnc_algorithm_replay/live_snapshot_bandwidth_baseline.md",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "tools/pnc_proto_mapper/test_encoding_v3_baseline.py"
          ],
          "commitId" : "a4cf39fe922a1d328c5a0aa64fbaa199ddca0f31",
          "timestamp" : 1788404095000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 冻结实时回放带宽极限基线\u000a\u000a以 2026-09-03 最新实录固化 Live v2 每帧独立解析合同、Common/Bootstrap 语义边界、已排除中间字段和复现方法。\u000a\u000a将带宽门禁更新为实际 wire 不超过 40 KiB/帧、压缩 Context 不超过 6 KiB/帧；Boost 因合同不等价仅作信息对照。\u000a",
          "date" : "2026-09-03 10:54:55 +0800",
          "id" : "a4cf39fe922a1d328c5a0aa64fbaa199ddca0f31",
          "msg" : "docs: 冻结实时回放带宽极限基线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_v3_bandwidth_baseline.yaml"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/live_snapshot_bandwidth_baseline.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/usage.md"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_encoding_v3_baseline.py"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/CMakeLists.txt",
            "tools/pnc_proto_mapper/test_build_boundaries.py",
            "proto/CMakeLists.txt",
            "replayer/sdk/cmake/pnc_replay_sdkConfig.cmake.in",
            "CMakeLists.txt",
            "replayer/sdk/cmake/workspace_bundle.json.in"
          ],
          "commitId" : "6a5cbab51ee504373953920ec94b0e0f21f5e672",
          "timestamp" : 1788409761000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "build: 支持回放 SDK 按需源码联编\u000a\u000a新增嵌入式 PlanFrame SDK 构建模式，隔离 pnc_node、HMI 和无关回放目标，只编译兼容解码与 ReplayerDataProcess 所需源集。\\n\\n为嵌套 Ninja 构建提供独立 Proto/SSEP 静态库和源码工作区 CMake 包，并增加链接完整性与构建边界检查。\u000a",
          "date" : "2026-09-03 12:29:21 +0800",
          "id" : "6a5cbab51ee504373953920ec94b0e0f21f5e672",
          "msg" : "build: 支持回放 SDK 按需源码联编",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "proto/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/cmake/workspace_bundle.json.in"
            },
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/sdk/cmake/pnc_replay_sdkConfig.cmake.in"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_build_boundaries.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/live_bridge_app_test.cpp",
            "replayer/live_bridge/live_map_runtime.hpp",
            "replayer/live_bridge/live_map_runtime.cpp"
          ],
          "commitId" : "14df069da02e3b38cffebf2a9ac0d2a350130833",
          "timestamp" : 1788416329000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 允许实时地图等待首帧身份\u000a\u000a网页可在首个 Live anchor 到达前只配置地图路径，运行时进入 configured_waiting_for_scene；首帧到达后自动采用其 logical ID 并加载地图。\\n\\n补充首帧前配置、anchor 到达和默认接口路径回归测试。\u000a",
          "date" : "2026-09-03 14:18:49 +0800",
          "id" : "14df069da02e3b38cffebf2a9ac0d2a350130833",
          "msg" : "fix: 允许实时地图等待首帧身份",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/live_bridge_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_map_runtime.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/live_map_runtime.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/live_bridge/pnc_live_web_bridge.cpp",
            "Testing/live_web_bridge_test.cpp"
          ],
          "commitId" : "dbfe6370d366b07308076c8ed53fa779d698dc82",
          "timestamp" : 1788417134000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 从 v2 实时上下文读取地图引用\u000a\u000aLive Bridge 在地图 gate 前解压当前 anchor 的 context_payload，不再读取 v2 中已废弃且为空的 envelope.common，避免完整地图被误判为 reference incomplete。\\n\\n测试默认改用当前 v2 writer 格式，并保留历史 v1 anchor 兼容覆盖。\u000a",
          "date" : "2026-09-03 14:32:14 +0800",
          "id" : "dbfe6370d366b07308076c8ed53fa779d698dc82",
          "msg" : "fix: 从 v2 实时上下文读取地图引用",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/live_web_bridge_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/audit_app_data2_codec.py",
            "replayer/scene_data/full_custom_codec_exclusions.yaml",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "CMakeLists.txt",
            "Testing/cfg_scenarios_proto_codec_test.cpp",
            "replayer/scene_data/compact_nested_boost_contracts.yaml",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "proto/decision.proto",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "proto/scenario.proto",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/cfg_scenarios_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "replayer/scene_data/longitude_constrain_proto_codec.cpp",
            "tools/pnc_proto_mapper/draft_persistence_policy.py",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "Taskfile.yml",
            "Testing/encoding_benchmark_test.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "replayer/scene_data/longitude_constrain_proto_codec.hpp",
            "replayer/scene_data/generated/boost_compact_persistence_diff.yaml",
            "replayer/scene_data/cfg_scenarios_proto_codec.hpp",
            "proto/pnc_scene/compact_guide_line.proto",
            "docs/pnc_algorithm_replay/live_snapshot_bandwidth_baseline.md",
            "replayer/scene_data/encoding_benchmark.cpp",
            "tools/pnc_proto_mapper/generator.py",
            "replayer/scene_data/plan_frame_nested_persistence_review.yaml",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "proto/pnc_scene/full_plan_frame.proto",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "f36b6eacb8f8e3102a252dff8850e4a639a8c1ef",
          "timestamp" : 1788444767000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善网页场景回放持久化与压缩\u000a\u000a补齐 AppData2、路由响应和 active-stage 场景配置的强类型持久化，确保 Full Proto 与 Candidate 回放状态完整。\\n\\n为 GuideLine PathBoundary、纵向曲线、纵向约束和 Block Range 增加兼容式 Compact 编码，保留旧 Bag 解码并降低实时快照带宽。\\n\\n扩展逐成员带宽审计与嵌套 Codec 门禁，修复消融基准浅拷贝污染，并记录最新混合 Stage 实测结果。\u000a",
          "date" : "2026-09-03 22:12:47 +0800",
          "id" : "f36b6eacb8f8e3102a252dff8850e4a639a8c1ef",
          "msg" : "feat: 完善网页场景回放持久化与压缩",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/live_snapshot_bandwidth_baseline.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_nested_persistence_review.yaml"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/draft_persistence_policy.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/boost_compact_persistence_diff.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_custom_codec_exclusions.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_guide_line.proto"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/full_plan_frame.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_nested_boost_contracts.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "edit",
              "file" : "proto/scenario.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/longitude_constrain_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/longitude_constrain_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_app_data2_codec.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/decision.proto"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/cfg_scenarios_proto_codec_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "data/other/flow_control.cpp"
          ],
          "commitId" : "c5737d9170508d933df1242e40f67b36180186c0",
          "timestamp" : 1788581619000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 放宽 BulkOut 两点判定的横向容差\u000a\u000a将 BulkOut 正反向两点兜底容差设为 10 米，BulkIn 保持 5 米，避免首任务尚无搜索结果时横向调整导致漏判。保留纵向与航向约束，增加现场坐标、容差边界及反向判定回归。\u000a",
          "date" : "2026-09-05 12:13:39 +0800",
          "id" : "c5737d9170508d933df1242e40f67b36180186c0",
          "msg" : "fix: 放宽 BulkOut 两点判定的横向容差",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/other/flow_control.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "data/plan/ssep_data.cpp"
          ],
          "commitId" : "d8b7cd36575ec8e5c2d2e51fd8aaa6bd569f0021",
          "timestamp" : 1788581637000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一双向 IMV 搜索包络的换向航向补偿\u000a\u000a将搜索车头相对物理车头的翻转与 vehicle_state 的 reversing_mode 异或，覆盖搜索成功帧及多段换向前后的方向更新。包络匹配和换向点航向检查共用补偿逻辑，保留单向车型及终点退出约束。增加现场首点和连续两次换向回归。\u000a",
          "date" : "2026-09-05 12:13:57 +0800",
          "id" : "d8b7cd36575ec8e5c2d2e51fd8aaa6bd569f0021",
          "msg" : "fix: 统一双向 IMV 搜索包络的换向航向补偿",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/scenario_planner_factory.h",
            "data/ssep/forward_ec.cpp",
            "ssep/scenarios/imv_general_planner.h"
          ],
          "commitId" : "7fd59d17d329b575b55226408ae672cc88bf5697",
          "timestamp" : 1788581650000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 通过通用参数保持 BulkOut 搜索的车头身份\u000a\u000a新增 allow_start_heading_flip 参数，经 extra_params 和规划器工厂传递，默认保留旧行为并校验参数值。振石 BulkOut 调用端禁用起点航向翻转，同时保留途中双向搜索与末段前进约束。原始场景回放成功，生成前进、倒车、前进三段并通过碰撞检查。\u000a",
          "date" : "2026-09-05 12:14:10 +0800",
          "id" : "7fd59d17d329b575b55226408ae672cc88bf5697",
          "msg" : "fix: 通过通用参数保持 BulkOut 搜索的车头身份",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp"
          ],
          "commitId" : "f910e31bc4994578e4510fe3a20c5d276aa751aa",
          "timestamp" : 1788581665000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 清理无搜索阶段的错误重规划上下文\u000a\u000a依据当前阶段实际配置的 SSEP_TASK 判断搜索能力，避免普通路口沿线规划误报连续路口搜索重规划。无搜索阶段在冷却判断前清理重规划原因、搜索请求和历史路径保留状态，防止 routing 换向后复用旧参考线。增加有无搜索任务及冷却期残留回归，现场 snapshot 的 24 帧恢复引导线匹配。\u000a",
          "date" : "2026-09-05 12:14:25 +0800",
          "id" : "f910e31bc4994578e4510fe3a20c5d276aa751aa",
          "msg" : "fix: 清理无搜索阶段的错误重规划上下文",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/imv_general_planner.h"
          ],
          "commitId" : "240e9ad3c3576f5ede013925a1244a244107fec3",
          "timestamp" : 1788584580000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 还原反向作业的 IMV 搜索物理车头朝向\u000a\u000a禁止起点航向翻转时，根据反向作业模式还原起点 heading 并转换方向，使末段前进约束对应物理车头。构建和执行搜索统一转换，两段组合搜索在途经点后不重复翻转。首任务与反向作业两例现场回放通过，保留途中倒车能力。\u000a",
          "date" : "2026-09-05 13:03:00 +0800",
          "id" : "240e9ad3c3576f5ede013925a1244a244107fec3",
          "msg" : "fix: 还原反向作业的 IMV 搜索物理车头朝向",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/path_quality.py",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/bulkout_reverse_quality.json",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/test_path_quality.py",
            "ssep/test/local_regression/bulkout_initial_quality.json",
            "ssep/test/local_regression/imv_bulkout_manifest.tsv"
          ],
          "commitId" : "3179fc951917edf5ecf75c6ba06ea5e73627ff2b",
          "timestamp" : 1788584596000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 增加 BulkOut 物理车头与路径质量回归\u000a\u000a收录首任务和反向作业重搜两例共享场景，独立验证物理起点航向、末段实际前进、终点误差、换向连续性、运动几何、长度和耗时，并要求最终碰撞检查证据。通过仓库 Proto 解析实际回放输出，保留输入副本、日志及质量报告。增加十一项验收器正反例与非法配置检查，逐例汇总异常；两例完整质量回归通过。\u000a",
          "date" : "2026-09-05 13:03:16 +0800",
          "id" : "3179fc951917edf5ecf75c6ba06ea5e73627ff2b",
          "msg" : "test: 增加 BulkOut 物理车头与路径质量回归",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/bulkout_reverse_quality.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/bulkout_initial_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_path_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/imv_bulkout_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/path_quality.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_ogm.hpp",
            "data/ssep/forward_ec.cpp",
            "plan/prepare/prepare_ogm.cpp"
          ],
          "commitId" : "ada6e49b3b74e5c4140b33c15f00c1578f4be1bb",
          "timestamp" : 1788625436000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 为振石 BulkOut 搜索保留完整后方点云\u000a\u000a从当前帧原始 OGM 点单独重建搜索线障碍，避免执行阶段的后方忽略状态污染多向重搜输入。执行 OGM 与原始点云保持不变，原始点云无效时拒绝构造不完整搜索环境。\u000a",
          "date" : "2026-09-06 00:23:56 +0800",
          "id" : "ada6e49b3b74e5c4140b33c15f00c1578f4be1bb",
          "msg" : "fix: 为振石 BulkOut 搜索保留完整后方点云",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/scenarios/imv_search_extra_params.h",
            "data/ssep/forward_ec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/scenarios/scenario_planner_factory.h",
            "CMakeLists.txt",
            "config/config_imv/ssep_port_scenarios_zhenshi.yaml",
            "ssep/scenarios/imv_general_planner.h",
            "ssep/scenarios/imv_extra_params_compat.h",
            "ssep/scenarios/imv_enter_station_planner.h",
            "data/ssep/ssep_ec.hpp",
            "ssep/scenarios/imv_multi_segment_parking_planner.h",
            "ssep/ssep_planner.cc",
            "data/ssep/ssep_ec.cpp",
            "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.h"
          ],
          "commitId" : "0a9d3633bedd56f4b094f6356afd89c515eb7143",
          "timestamp" : 1788625484000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 统一振石 IMV 场景的搜索参数配置\u000a\u000a复用现有场景 YAML 到 SsepInput.extra_params 链路，为 BulkOut、带途经点 BulkIn 和普通 BulkIn 提供场景级参数。IMVGeneral 通过通用方向、车头身份、碰撞裕量和方向代价参数构造搜索，不再使用振石专用构造开关；历史输入在规划入口转换为等价通用参数。显式参数会绕过不兼容的路径仓库与通用热启动，参数解析失败时明确返回错误。\u000a",
          "date" : "2026-09-06 00:24:44 +0800",
          "id" : "0a9d3633bedd56f4b094f6356afd89c515eb7143",
          "msg" : "feat: 统一振石 IMV 场景的搜索参数配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "add",
              "file" : "config/config_imv/ssep_port_scenarios_zhenshi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/imv_search_extra_params.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/imv_extra_params_compat.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_enter_station_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/ssep_input_provider.h",
            "ssep/offboard/ssep_input_provider.cc",
            "ssep/test/local_regression/test_replay_input.py",
            "ssep/offboard/scene_replay/replay_ssep_input_cli.cc",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/test_raw_replay_cli.py"
          ],
          "commitId" : "129e2e17a7c53ebb43912738e23a831dabdb360f",
          "timestamp" : 1788625512000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 严格区分 SSEP 原样回归与参数实验\u000a\u000a默认按录制输入中的 extra_params 回放，只有显式参数实验才应用质量配置覆盖，并在产物中记录模式和覆盖项。原始输入回放工具新增参数覆盖入口；解析失败、输入缺失、空目录和规划失败在严格模式下均返回非零。\u000a",
          "date" : "2026-09-06 00:25:12 +0800",
          "id" : "129e2e17a7c53ebb43912738e23a831dabdb360f",
          "msg" : "test: 严格区分 SSEP 原样回归与参数实验",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_raw_replay_cli.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/replay_ssep_input_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_input_provider.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_input_provider.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_replay_input.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/plan/smooth_task.cpp",
            "data/plan/ssep_data.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp",
            "tasks/other_tasks/stitch_path_to_reference_line.cpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "data/plan/ssep_data.hpp",
            "tasks/plan/keb_path_optimize_task.cpp",
            "Testing/reference_line_replan_test.cpp",
            "tasks/other_tasks/stitch_path_to_reference_line.hpp",
            "tasks/other_tasks/create_reference_line.cpp"
          ],
          "commitId" : "ef96197a59beacebe0f4a91adcdc2299a8ea6d50",
          "timestamp" : 1788774291000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 重搜期间复用成功路径并实时更新参考线\u000a\u000a锁存当前路口最后成功的 SSEP 路径，每帧从完整缓存拼接实时参考线，保留物理末点并处理滚动地图起点裁剪。\u000a普通路口构建失败时保留累计次数；重试耗尽后清理请求，有成功路径则继续拼接，无成功路径则恢复正常参考线更新。\u000a退出搜索时清理等待状态和旧包络，补齐缓存路径的快照坐标转换及投影重建。\u000a保持期间沿实时引导线进行局部规划，避免有限历史输出耗尽。\u000a\u000a验证：参考线与重规划状态回归，以及纵向停车和连续性回归。\u000a",
          "date" : "2026-09-07 17:44:51 +0800",
          "id" : "ef96197a59beacebe0f4a91adcdc2299a8ea6d50",
          "msg" : "fix: 重搜期间复用成功路径并实时更新参考线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/smooth_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_to_reference_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_to_reference_line.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/create_reference_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "proto/keb_scene.proto",
            "tasks/plan/keb_lane_follow_path_task.cpp",
            "offboard/keb_path_opt_cli/local_regression/keb_regression_manifest.tsv",
            "algorithm/plan/keb_optimizer.hpp",
            "offboard/bag_to_keb_scene/bag_to_keb_scene.cc",
            "replayer/replayer_data_process/replayer_data_extraction.cpp",
            "tasks/plan/keb_utils_core.cpp",
            "CMakeLists.txt",
            "tasks/plan/keb_utils.cpp",
            "offboard/keb_path_opt_cli/README.md",
            "tasks/plan/keb_utils_core.hpp",
            "offboard/keb_path_opt_cli/local_regression/README.md",
            "algorithm/plan/keb_optimizer.cpp",
            "offboard/keb_path_opt_cli/keb_simulator.cc",
            "Testing/keb_fixed_tail_test.cpp"
          ],
          "commitId" : "70784b598274cb5b48d54cde4ae986b21a0794ea",
          "timestamp" : 1788774330000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 自适应调整 KEB 固定尾段优化范围\u000a\u000a预检 IMV LaneFollow 的固定尾段，必要时在当前段终点范围内有界前移滚动目标，最多检查四个候选且只求解一次。\u000a检查热启动固定尾段，边界不合法时回退冷启动；最终输出保留完整边界校验。\u000a按实车匹配点计算允许前移距离，同步在线、GUI/CLI 提取、离线回放及 HMI 实际目标；新 KebScene 显式保存前移上限，兼容旧数据。\u000a添加固定段与终点范围回归，并将出堆场 103 帧原始数据登记到共享回归清单。\u000a\u000a验证：固定尾段单元测试、完整 KEB 回归清单和 pnc_node 构建。\u000a",
          "date" : "2026-09-07 17:45:30 +0800",
          "id" : "70784b598274cb5b48d54cde4ae986b21a0794ea",
          "msg" : "fix: 自适应调整 KEB 固定尾段优化范围",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/README.md"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/local_regression/keb_regression_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/keb_simulator.cc"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/keb_scene.proto"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_fixed_tail_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_lane_follow_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/bag_to_keb_scene.cc"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_extraction.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/imv_out_yard_pending_cases.json"
          ],
          "commitId" : "fae88de2856a95acf2e39668796bd56902ac66a4",
          "timestamp" : 1788774349000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 归档出堆场内圈出口碰撞待修复案例\u000a\u000a登记异常和正常对照场景及原始搜索输入，记录共享数据路径和 SHA-256。\u000a明确内圈允许通行，问题是出口处车身碰撞；不得以必须走大圈或路径长度作为验收标准。\u000a记录添加超视距障碍物的规避方案，将算法问题保留为 deferred，不纳入仅校验搜索成功的必过清单。\u000a\u000a验证：四个原始文件校验一致，两份场景均可解析。\u000a",
          "date" : "2026-09-07 17:45:49 +0800",
          "id" : "fae88de2856a95acf2e39668796bd56902ac66a4",
          "msg" : "test: 归档出堆场内圈出口碰撞待修复案例",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/imv_out_yard_pending_cases.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/map/pnc_map/routing_extension/routing_data.cpp",
            "data/config/cfg_static.hpp",
            "Testing/routing_transition_test.cpp",
            "CMakeLists.txt",
            "data/map/pnc_map/routing_extension/routing_transition.hpp",
            "data/map/pnc_map/routing_extension/routing_data.hpp"
          ],
          "commitId" : "06f22cb96e630a15ea10919166754fc049aa7903",
          "timestamp" : 1788832537000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一分段路径衔接判定并修复双向 IMV 漏换向\u000a\u000a将方向计算和 openspace 入口统一为同向接续、直接换向与搜索衔接三类。\u000a双向 IMV 在纵向间隙不超过 1 米、横向偏差不超过 0.1 米、反向角偏差不超过 5 度时直接换向，修复 T304 因端点相距约 0.914 米而漏换向的问题。\u000a补齐缺失的 openspace 连接点并优先保留已有途经点，增加独立回归目标，覆盖方向初始化、段末停车、阈值边界和任务生命周期。\u000a为显式 10/11 掉头途经点与几何换向的优先级添加 TODO，当前保持原行为。\u000a",
          "date" : "2026-09-08 09:55:37 +0800",
          "id" : "06f22cb96e630a15ea10919166754fc049aa7903",
          "msg" : "fix: 统一分段路径衔接判定并修复双向 IMV 漏换向",
          "paths" : [
            {
              "editType" : "add",
              "file" : "data/map/pnc_map/routing_extension/routing_transition.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_static.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/routing_transition_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/routing_transition_test.cpp",
            "data/map/pnc_map/routing_extension/routing_data.cpp"
          ],
          "commitId" : "7087555b29af0107f6256b7f266e17f05fe74284",
          "timestamp" : 1788832554000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复重合端点的 openspace 建区退化\u000a\u000a端点重合时使用车道法向确定平行搜索框朝向，避免搜索范围错误依赖全局坐标轴。\u000a上下引桥连接线为零长度时，按车道航向直接构造扩展走廊，避免无效子多边形在合并时被丢弃。\u000a新增普通车型重合端点及上下引桥旋转回归。最终 12 项衔接回归与 14 项地图保护回归通过，pnc_node 集群构建成功。\u000a",
          "date" : "2026-09-08 09:55:54 +0800",
          "id" : "7087555b29af0107f6256b7f266e17f05fe74284",
          "msg" : "fix: 修复重合端点的 openspace 建区退化",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_region.hpp",
            "data/config/cfg_region.cpp",
            "data/ssep/ssep_ec.cpp",
            "data/ssep/forward_ec.cpp"
          ],
          "commitId" : "894b6ed6a27b45f3857ca3a7d22f86f0e76c6f73",
          "timestamp" : 1788836917000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 新增津西区域识别并接入搜索配置\u000a\u000a依据津西 map_jx_20260903_v1.1.1 地图包围盒确定区域中心，\u000a沿用 WHBULK 的 3000 米识别半径，并在枚举末尾新增 JIN_XI。\u000a\u000a将津西接入 WHBULK 同类前进通道、参考线、途经点采样及\u000a终点通道兜底分支，并支持 TT/CAR 的通用搜索器回退选择。\u000a\u000a验证：地图全部 4633 个坐标点被覆盖，与现有 32 个区域不重叠；\u000agit diff --check 及工程 task 的 pnc_node 编译通过。\u000a",
          "date" : "2026-09-08 11:08:37 +0800",
          "id" : "894b6ed6a27b45f3857ca3a7d22f86f0e76c6f73",
          "msg" : "feat: 新增津西区域识别并接入搜索配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_region.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_region.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/scenarios/imv_extra_params_compat.h",
            "ssep/ssep_planner.cc",
            "ssep/test/local_regression/README.md",
            "data/ssep/forward_ec.cpp"
          ],
          "commitId" : "856a59b68229c3791c2ed2f23b449f8fba2e9fcf",
          "timestamp" : 1788845864000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 移除振石出场硬编码参数及旧开关兼容\u000a\u000a删除 enable_zhenshi_bulkout_mode 的兼容转换及前进搜索中\u000a振石 BulkOut 的参数补充，搜索参数直接由 YAML 显式配置。\u000a缺项采用 planner 通用默认值，历史输入也不再自动展开旧开关。\u000a\u000a同步删除旧开关测试并更新参数配置说明，保留通用参数校验。\u000a",
          "date" : "2026-09-08 13:37:44 +0800",
          "id" : "856a59b68229c3791c2ed2f23b449f8fba2e9fcf",
          "msg" : "refactor: 移除振石出场硬编码参数及旧开关兼容",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "delete",
              "file" : "ssep/scenarios/imv_extra_params_compat.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.hpp",
            "data/ssep/forward_ec.cpp",
            "CMakeLists.txt",
            "docs/ssep_scenario_config_lifecycle.md",
            "data/ssep/into_yard_junction_ec.hpp",
            "data/ssep/open_space_ec.cpp",
            "data/config/cfg_static.hpp",
            "data/ssep/open_space_ec.hpp",
            "data/ssep/into_yard_junction_ec.cpp",
            "data/ssep/ssep_ec.hpp",
            "data/ssep/forward_ec.hpp",
            "data/ssep/ssep_ec.cpp",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "5363de0da861e2496b85339ca2ec110a7dc11a08",
          "timestamp" : 1788845874000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一搜索场景参数生命周期并保护配置优先级\u000a\u000a在公共场景匹配入口和 Reset 中清理旧 planner 与参数，\u000a避免未匹配、空配置和重复请求携带上次动态拉直参数。\u000a\u000a以匹配标记保护 YAML 选择，场地及车型默认仅用于未匹配回退；\u000a保留 CAR 换向、低贝位和远程引导等运行时切换。\u000a输出参数整组替换并清理旧远程引导线，投影失败时保留 YAML\u000a且停止无效拉直计算。快照版本升级并兼容旧版读取。\u000a\u000a新增覆盖九类搜索的 47 项回归和逐场景检查文档。\u000a验证：47 项测试、pnc_node 编译及 git diff --check 通过。\u000a",
          "date" : "2026-09-08 13:37:54 +0800",
          "id" : "5363de0da861e2496b85339ca2ec110a7dc11a08",
          "msg" : "fix: 统一搜索场景参数生命周期并保护配置优先级",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/ssep_scenario_config_lifecycle.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_static.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/plan/keb_path_optimize_task.hpp",
            "tasks/plan/keb_path_optimize_task.cpp"
          ],
          "commitId" : "dc8e39e0db33c03dd603121d395be1510ae6361b",
          "timestamp" : 1788876169000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 统一 KEB 路径优化的请求与结果处理\u000a\u000a将同步和异步优化收敛到共享的请求快照、求解和结果写回流程，后台线程不持有 Task 或 PlanFrame。\u000a拆分 SSEP 前置处理、重搜保持与 PJPO 兜底，保留 generation 失效保护和完整输出历史。\u000a检查路径投影写回结果，删除未使用成员、失效注释和无效的局部路径匹配。\u000a",
          "date" : "2026-09-08 22:02:49 +0800",
          "id" : "dc8e39e0db33c03dd603121d395be1510ae6361b",
          "msg" : "refactor: 统一 KEB 路径优化的请求与结果处理",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "tasks/plan/keb_utils.cpp",
            "tasks/plan/keb_path_optimize_task.hpp",
            "tasks/plan/keb_utils.hpp",
            "scenarios/task_condition_evaluator.cpp",
            "tasks/plan/keb_path_optimize_task.cpp"
          ],
          "commitId" : "24f5045653dc407ae8c50c9ebc5f22c13df50e1a",
          "timestamp" : 1788876205000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持直行堆场路口 KEB 并保持切换路径连续\u000a\u000aNORMAL_FOLLOW 使用 guide line 路口终点构建无 SSEP 的 KEB 输入，延伸距离保留为 0 米。\u000a首次异步等待时放行有效历史路径拼接；末端在区域切换前复用原路口输出，避免无轨迹停车。\u000a远处后续路口不抢占末端复用目标，进入下一路口后正常更新目标；失效输入和真实求解失败仍保留错误处理。\u000a补充选择器、终点、方向、异步等待、末端复用及 Reset 生命周期回归，兼容无 SSEP 的回放可视化输入。\u000a\u000a验证：pnc_node 和相关测试目标构建通过，74 项规划回归通过，回放基础测试通过 202/203 项。\u000a已知未解决项：既有 EncodingBenchmarkTest.ReportsSameGroupBoostAndCompactAblations 字节数重复性测试仍失败。\u000a",
          "date" : "2026-09-08 22:03:25 +0800",
          "id" : "24f5045653dc407ae8c50c9ebc5f22c13df50e1a",
          "msg" : "feat: 支持直行堆场路口 KEB 并保持切换路径连续",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/plan/keb_path_optimize_task.hpp",
            "tasks/plan/keb_path_optimize_task.cpp"
          ],
          "commitId" : "0942ec2b21bc9056d0fc2a74d0640ffed7b3c828",
          "timestamp" : 1788876462000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 统一 KEB 路径优化的请求与结果处理\u000a\u000a将同步和异步优化收敛到共享的请求快照、求解和结果写回流程，后台线程不持有 Task 或 PlanFrame。\u000a拆分 SSEP 前置处理、重搜保持与 PJPO 兜底，保留 generation 失效保护和完整输出历史。\u000a检查路径投影写回结果，删除未使用成员、失效注释和无效的局部路径匹配。\u000a",
          "date" : "2026-09-08 22:07:42 +0800",
          "id" : "0942ec2b21bc9056d0fc2a74d0640ffed7b3c828",
          "msg" : "refactor: 统一 KEB 路径优化的请求与结果处理",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "tasks/plan/keb_path_optimize_task.hpp",
            "tasks/plan/keb_utils.cpp",
            "scenarios/task_condition_evaluator.cpp",
            "tasks/plan/keb_utils.hpp",
            "tasks/plan/keb_path_optimize_task.cpp"
          ],
          "commitId" : "abaf5d01dcb656c9138007e91f34fede7bca4eef",
          "timestamp" : 1788876560000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持直行堆场路口 KEB 并保持切换路径连续\u000a\u000aNORMAL_FOLLOW 使用 guide line 路口终点构建无 SSEP 的 KEB 输入，延伸距离保留为 0 米。\u000a首次异步等待时放行有效历史路径拼接；末端在区域切换前复用原路口输出，避免无轨迹停车。\u000a远处后续路口不抢占末端复用目标，进入下一路口后正常更新目标；失效输入和真实求解失败仍保留错误处理。\u000a补充选择器、终点、方向、异步等待、末端复用及 Reset 生命周期回归，兼容无 SSEP 的回放可视化输入。\u000a\u000a验证：pnc_node 和相关测试目标构建通过，74 项规划回归通过，回放基础测试通过 202/203 项。\u000a已知未解决项：既有 EncodingBenchmarkTest.ReportsSameGroupBoostAndCompactAblations 字节数重复性测试仍失败。\u000a",
          "date" : "2026-09-08 22:09:20 +0800",
          "id" : "abaf5d01dcb656c9138007e91f34fede7bca4eef",
          "msg" : "feat: 支持直行堆场路口 KEB 并保持切换路径连续",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/encoding_benchmark.cpp"
          ],
          "commitId" : "afebc431763585ce073f664189aed383c2c5aae6",
          "timestamp" : 1788879780000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 固定回放带宽基准的默认配置\u000a\u000a规划配置消融每轮创建栈临时对象，历史构造函数未初始化的标量会使 Proto 字节数波动。\u000a改为复制静态只读默认配置，利用静态初始化清零并保留各配置构造函数的显式默认值。\u000a\u000a保留重复测量原始字节数必须相等的断言；回放主回归通过，问题用例连续运行 5 次通过。\u000a",
          "date" : "2026-09-08 23:03:00 +0800",
          "id" : "afebc431763585ce073f664189aed383c2c5aae6",
          "msg" : "fix: 固定回放带宽基准的默认配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/platoon_lattice_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp"
          ],
          "commitId" : "50a59f5f3a4b6e322f4aa51ff24c9c7ebf46126c",
          "timestamp" : 1788932810000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Anticipate speed constraints in platoon CACC trajectories\u000a",
          "date" : "2026-09-09 13:46:50 +0800",
          "id" : "50a59f5f3a4b6e322f4aa51ff24c9c7ebf46126c",
          "msg" : "Anticipate speed constraints in platoon CACC trajectories",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/boundary/driving_corridor.cpp",
            "CMakeLists.txt",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/compact_driving_corridor_restore_test.cpp"
          ],
          "commitId" : "c042c821f0da0eb00dd8cf9a6e54ce439c54bb03",
          "timestamp" : 1788934933000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 恢复快照走廊默认状态与历史起点\u000a\u000aCompact 省略可重建走廊时保留原生重建范围，显式 Full 字段仍按保存值恢复。\u000a历史起点判断改读当前引导线匹配值，避免读取尚未初始化的本帧缓存。\u000a补齐 Full/Compact、Recorded/Candidate、历史复用及可选真实 bag 回归。\u000a",
          "date" : "2026-09-09 14:22:13 +0800",
          "id" : "c042c821f0da0eb00dd8cf9a6e54ce439c54bb03",
          "msg" : "fix: 恢复快照走廊默认状态与历史起点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/boundary/road_wall_band.cpp",
            "Testing/road_wall_band_equivalence_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/boundary/driving_corridor.cpp",
            "CMakeLists.txt",
            "data/boundary/road_wall_band.hpp"
          ],
          "commitId" : "2b491858a30362fb1c709ff8dc3b82ad8ec110b2",
          "timestamp" : 1788934968000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 局部计算道路边界带并保持像素结果\u000a\u000a在已栅格化墙的包围盒及保守影响余量内计算临时距离，输出保留完整栅格范围。\u000a融合边界带比较与位运算，保持严格阈值、距离算法和按位 mask 语义。\u000a补充全图参考的逐像素回归，并同步数据头文件审计指纹。\u000a",
          "date" : "2026-09-09 14:22:48 +0800",
          "id" : "2b491858a30362fb1c709ff8dc3b82ad8ec110b2",
          "msg" : "perf: 局部计算道路边界带并保持像素结果",
          "paths" : [
            {
              "editType" : "add",
              "file" : "data/boundary/road_wall_band.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/road_wall_band_equivalence_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/boundary/road_wall_band.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ogm_distance_equivalence_test.cpp",
            "CMakeLists.txt",
            "data/obstacle/ogm.cpp"
          ],
          "commitId" : "79a36e860d0b7f430c6dcfae684dbf104f41e028",
          "timestamp" : 1788935047000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 精简占用距离场构建的内存操作\u000a\u000a将复制、反相及阈值处理合并为等价阈值操作，省去完整距离和标签输出写入前的清零。\u000a写入前释放旧 Mat 引用，保持历史帧和快照浅拷贝隔离。\u000a逐像素验证距离、标签、来源及边界带标志，覆盖尺寸变化、ROI 和共享输出。\u000a",
          "date" : "2026-09-09 14:24:07 +0800",
          "id" : "79a36e860d0b7f430c6dcfae684dbf104f41e028",
          "msg" : "perf: 精简占用距离场构建的内存操作",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/ogm_distance_equivalence_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ogm_distance_equivalence_test.cpp",
            "data/obstacle/ogm.cpp"
          ],
          "commitId" : "ea146ed8a0eb5bcc9d1e15f1dc71f3b2bc9a277a",
          "timestamp" : 1788935075000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 精确复用相同输入的占用距离场\u000a\u000a增加线程局部单项缓存，保留数据上限为 32 MiB，以完整灰度和有效边界带逐字节确认输入。\u000a连续两次相同输入后缓存结果，命中时深拷贝输出；输入变化或缓存分配失败时完整计算。\u000a补充缓存失效、输入和输出污染、历史隔离、坐标元数据及线程交错回归。\u000a",
          "date" : "2026-09-09 14:24:35 +0800",
          "id" : "ea146ed8a0eb5bcc9d1e15f1dc71f3b2bc9a277a",
          "msg" : "perf: 精确复用相同输入的占用距离场",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ogm_distance_equivalence_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/dp_poly_path/dp_road_graph.cpp",
            "data/dp_poly_path/trajectory_cost.cpp",
            "data/dp_poly_path/trajectory_cost_test.cpp"
          ],
          "commitId" : "56fcf5d5797119577bcc2573e4a078c1bf635722",
          "timestamp" : 1788935114000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 移除 DP 无效计算和临时节点分配\u000a\u000a删除没有读取方的每边临时链表写入，保留现有成员和清理逻辑。\u000a动态障碍列表为空时跳过时间循环，保留末尾权重缩放及 NaN、Inf、负零语义。\u000a补充公共代价接口回归，验证空间代价和硬约束标志不变。\u000a",
          "date" : "2026-09-09 14:25:14 +0800",
          "id" : "56fcf5d5797119577bcc2573e4a078c1bf635722",
          "msg" : "perf: 移除 DP 无效计算和临时节点分配",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/dp_road_graph.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/trajectory_cost_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/trajectory_cost.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/compact_driving_corridor_restore_test.cpp",
            "docs/pnc_algorithm_replay/dp_corridor_performance.md"
          ],
          "commitId" : "5318c3acfa7bc1055972b55c5c7b6a31208d8306",
          "timestamp" : 1788935143000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 固化 DP 优化的结果一致性与耗时基准\u000a\u000a为可选真实 bag 回归增加逐帧结果和耗时导出，覆盖完整 DP trace、路径、候选代价与边界。\u000a记录两轮等价优化方法、缓存边界、验证命令及 108 帧精确对比结果。\u000a保持规划覆盖和精度，通道与 DP 平均耗时由 78.8 ms 降至约 22 ms；相关回归和构建已通过。\u000a",
          "date" : "2026-09-09 14:25:43 +0800",
          "id" : "5318c3acfa7bc1055972b55c5c7b6a31208d8306",
          "msg" : "test: 固化 DP 优化的结果一致性与耗时基准",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/dp_corridor_performance.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "launch/pnc_leader.launch.py"
          ],
          "commitId" : "ee002d6158972184eeca7d9c13c37ad785331919",
          "timestamp" : 1788938786000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Add leader PNC launch with 30 km/h speed override\u000a",
          "date" : "2026-09-09 15:26:26 +0800",
          "id" : "ee002d6158972184eeca7d9c13c37ad785331919",
          "msg" : "Add leader PNC launch with 30 km/h speed override",
          "paths" : [
            {
              "editType" : "add",
              "file" : "launch/pnc_leader.launch.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/routing_map_guard_test.cpp"
          ],
          "commitId" : "b2527bbde7a5a30c69610f3dd362307ad30ff7ca",
          "timestamp" : 1788941486000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 初始化碰撞边界回归的车辆尺寸\u000a\u000a碰撞越界回归直接使用未加载的 CfgStatic，部分上层车身尺寸未初始化，偶发产生负长度包围盒并中止测试。\u000a通过 Proto decoder 提供明确的车身尺寸；无效投影测试使用静态零初始化配置。\u000a\u000a验证：CrashHelperGuardTest 连续 20 轮通过，routing_map_guard_test 和相关专项回归通过。\u000a",
          "date" : "2026-09-09 16:11:26 +0800",
          "id" : "b2527bbde7a5a30c69610f3dd362307ad30ff7ca",
          "msg" : "test: 初始化碰撞边界回归的车辆尺寸",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/routing_map_guard_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/search_decider/search_decider_lifecycle.cpp",
            "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "Testing/reference_line_replan_test.cpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.cpp",
            "CMakeLists.txt",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "docs/ssep_search_lifecycle.md",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "tasks/deciders/search_decider/reverse_search_decider.cpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
          ],
          "commitId" : "650a67ae1c42c64154490dba5c0911063d648f44",
          "timestamp" : 1788941525000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一搜索生命周期并保留待消费人工请求\u000a\u000a九类 SearchDecider 复用构建失败计数、显式重启和帧末收尾，避免 EC Reset 刷新失败预算。\u000a仅在新进入 UNUSE 时结束失败请求，保留等待原有终态门控消费的人工重规划上下文，避免命令脉冲消失后请求被旧搜索失败清掉。\u000a保持各场景重启条件、fallback 顺序和历史输出策略，以及原有成功完成清理时序。\u000a补充九类参数化、普通路口跨帧与 REQUEST/RUNNING/FINISH 人工请求回归，记录生命周期说明。\u000a\u000a验证：8 组专项 CTest 通过；pnc_node、pnc_replayer 和回放主测试构建通过。\u000a",
          "date" : "2026-09-09 16:12:05 +0800",
          "id" : "650a67ae1c42c64154490dba5c0911063d648f44",
          "msg" : "fix: 统一搜索生命周期并保留待消费人工请求",
          "paths" : [
            {
              "editType" : "add",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "add",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/map/pnc_map/pnc_map_path.cpp",
            "CMakeLists.txt",
            "Testing/pnc_map_overlap_test.cpp",
            "data/map/pnc_map/pnc_map_path.hpp"
          ],
          "commitId" : "17ad1640bc31f74e6ddab67771868645ab7e241f",
          "timestamp" : 1788941551000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一地图区间投影并保留合并端点\u000a\u000aRegion、禁停区和减速带同时投影并裁剪两端，避免短区间混用车道累计 s 与实际路径 s，投影后恢复起点排序。\u000a跨车道合并禁停区和减速带时保留最外侧几何端点，避免包含子段或首段端点截断合并范围。\u000a补充 38 项区间投影、裁剪、无效输入、合并边界和停车线回归，并同步源码审计 hash。\u000a\u000a验证：routing_map_guard_test 及相关 8 组专项 CTest 通过；生成文件与 Proto 兼容性检查通过。\u000a",
          "date" : "2026-09-09 16:12:31 +0800",
          "id" : "17ad1640bc31f74e6ddab67771868645ab7e241f",
          "msg" : "fix: 统一地图区间投影并保留合并端点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map_path.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "Testing/pnc_map_overlap_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map_path.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/boundary/sidepass_utils.cpp",
            "plan/prepare/prepare_ogm.cpp",
            "tasks/plan/keb_utils.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "data/boundary/driving_corridor.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/boundary/sidepass_utils.hpp",
            "Testing/keb_gate_filter_test.cpp",
            "CMakeLists.txt",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "plan/prepare/prepare_ogm.hpp"
          ],
          "commitId" : "49b79f589bdc32a873cd4b298543d9b1cb87d8a3",
          "timestamp" : 1788949102000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一 KEB 与 SSEP 的闸口点云过滤\u000a\u000a将闸口掩码和拖挂车辆半宽计算抽到 sidepass_utils，供 DrivingCorridor、KEB 和 OGM 轮廓提取共用。\u000a\u000a在轮廓提取前过滤临时栅格，保留原始 OGM、采样点和碰撞索引。Prepare 使用历史 guide 与当前车辆位姿；历史 guide 无效时不过滤，不从参考线重建兜底。回放在引导线恢复后刷新车体及 UTM 轮廓。\u000a\u000a补充 15 项闸口过滤回归，覆盖上下层、开关、历史位姿、无 guide、原始碰撞输入保留和刷新生命周期；同步生成审计输入指纹。\u000a\u000a验证：pnc_node 和 pnc_replayer 通过 icecream -j60 多机编译；polygon_sl_projector 78 项、ssep_path_corridor 74 项测试通过，生成物检查通过。\u000a",
          "date" : "2026-09-09 18:18:22 +0800",
          "id" : "49b79f589bdc32a873cd4b298543d9b1cb87d8a3",
          "msg" : "fix: 统一 KEB 与 SSEP 的闸口点云过滤",
          "paths" : [
            {
              "editType" : "add",
              "file" : "data/boundary/sidepass_utils.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/boundary/sidepass_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_gate_filter_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_safe_const.cpp"
          ],
          "commitId" : "f357bcdcb91c19fea619b4fa788f033396e4f9d7",
          "timestamp" : 1788949117000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 收紧闸口点云过滤默认横向缓冲\u000a\u000a将未配置 gate_sidepass_filter_lateral_buffer_m 时的默认值由 0.5 m 调整为 0.3 m，减少车身边界之外额外清除的点云范围。显式配置仍优先于默认值。\u000a",
          "date" : "2026-09-09 18:18:37 +0800",
          "id" : "f357bcdcb91c19fea619b4fa788f033396e4f9d7",
          "msg" : "fix: 收紧闸口点云过滤默认横向缓冲",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_safe_const.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_ogm.cpp",
            "tasks/plan/keb_utils.cpp",
            "CMakeLists.txt",
            "plan/prepare/prepare_ogm.hpp",
            "Testing/roadside_contour_test.cpp"
          ],
          "commitId" : "2e3c53e6a82bb958e566997de5338c4332a7fde3",
          "timestamp" : 1789006951000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复沟点轮廓包络与边缘点丢失\u000a\u000a独立生成沟点轮廓，恢复稀疏点簇连接并沿完整占用格边界包住原始点。\u000a按凸包锚点分段简化，逐段校验原始点包含关系，保留明显凹口。\u000a临时栅格四侧补一格并同步中心，防止最近格心落格丢弃边缘点。\u000a补充真实快照、小数坐标、边缘及减段回归；102 项测试通过，多机编译完成。\u000a",
          "date" : "2026-09-10 10:22:31 +0800",
          "id" : "2e3c53e6a82bb958e566997de5338c4332a7fde3",
          "msg" : "fix: 修复沟点轮廓包络与边缘点丢失",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/roadside_contour_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/plan/keb_lane_follow_path_task.cpp",
            "ssep/keb_optimizer/rigid_truck_keb_optimizer.h",
            "Testing/keb_roadside_config_test.cpp",
            "algorithm/plan/keb_optimizer.hpp",
            "offboard/bag_to_keb_scene/bag_to_keb_scene.cc",
            "tasks/plan/keb_path_optimize_task.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/keb_utils_core.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "CMakeLists.txt",
            "ssep/maps/ogm_builder.cc",
            "tools/pnc_proto_mapper/test_config_schema_presence.py",
            "data/config/cfg_lat_plan.hpp",
            "offboard/keb_path_opt_cli/closed_loop_utils.cc",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "data/config/cfg_lat_plan.cpp",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "algorithm/plan/keb_optimizer.cpp",
            "Testing/keb_roadside_footprint_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "offboard/keb_path_opt_cli/keb_simulator.cc",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/keb_scene.proto",
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "ssep/keb_optimizer/rigid_truck_keb_optimizer.cc",
            "ssep/keb_optimizer/imv_keb_optimizer.cc",
            "ssep/keb_optimizer/imv_keb_optimizer.h",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/replayer_data_process/replayer_data_extraction.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "config/config_imv/plan.yaml",
            "tasks/plan/keb_utils_core.hpp",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/maps/ogm_builder.h",
            "Testing/keb_obstacle_visibility_test.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "3236b25aa5c2cbbe4ae141dda3c374ac0615ae08",
          "timestamp" : 1789007015000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善 KEB 障碍约束配置及回放\u000a\u000a起终点清障独立配置，默认保留起点障碍、清除终点占用区域；沟点层保持不清障。\u000a增加默认零值的沟点前后与左右内缩，统一优化和精确碰撞校验使用的几何。\u000a将三车型的沟点代价参数归入 OptParam，构造时复制可选沟点车身几何。\u000a同步 Full、Compact、离线场景与 CLI 参数传递，保留显式 false 和旧场景默认语义。\u000a补充配置持久化、车身内缩和清障组合测试；协议生成、兼容性检查及多机编译通过。\u000a",
          "date" : "2026-09-10 10:23:35 +0800",
          "id" : "3236b25aa5c2cbbe4ae141dda3c374ac0615ae08",
          "msg" : "feat: 完善 KEB 障碍约束配置及回放",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/rigid_truck_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/rigid_truck_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_lane_follow_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "config/config_imv/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "proto/keb_scene.proto"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/bag_to_keb_scene.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/keb_simulator.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_extraction.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_config_schema_presence.py"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_roadside_footprint_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_path_opt_cli/closed_loop_utils.cc"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_obstacle_visibility_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_roadside_config_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_lat_plan.cpp"
          ],
          "commitId" : "300b1ca727764e2d652d0994e6bc9e01d3912ed6",
          "timestamp" : 1789007050000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "chore: 调整沟点硬安全间距默认值\u000a\u000aROS 参数未显式配置时，将沟点硬安全间距默认值从 0.05 m 调整为 0 m。\u000a单独记录此调参，便于独立审查和回退。\u000a",
          "date" : "2026-09-10 10:24:10 +0800",
          "id" : "300b1ca727764e2d652d0994e6bc9e01d3912ed6",
          "msg" : "chore: 调整沟点硬安全间距默认值",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/fsm_safety_brake.hpp",
            "data/plan/start_point_data.cpp",
            "data/plan/start_point_data.hpp",
            "algorithm/lattice/jerk_limited_stop.hpp",
            "tasks/plan/lattice_task.cpp",
            "Testing/jerk_limited_stop_test.cpp"
          ],
          "commitId" : "45fbd05d800b5f04df7e9156c7c56ccbbcdb2f88",
          "timestamp" : 1789009577000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Preserve stitched acceleration across braking and recovery\u000a\u000aKeep the unified initial acceleration for normal and FSM fallback. Preserve inherited braking within physical limits and diagnose exceptional start adjustments. Remove the obsolete acceleration-clear/restore path and cover the revised stop behavior.\u000a",
          "date" : "2026-09-10 11:06:17 +0800",
          "id" : "45fbd05d800b5f04df7e9156c7c56ccbbcdb2f88",
          "msg" : "Preserve stitched acceleration across braking and recovery",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/start_point_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/lattice_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/fsm_safety_brake.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/jerk_limited_stop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/start_point_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/lattice/lattice_trajectory1d.cpp",
            "Testing/jerk_limited_stop_test.cpp"
          ],
          "commitId" : "57eac5ba7f0d9fd8234826e02495d20a665cf084",
          "timestamp" : 1789009587000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Normalize numerical stop endpoints without erasing acceleration\u000a\u000aApply terminal speed normalization at the exact endpoint as well as the hold segment. Preserve real nonzero terminal acceleration and add a regression.\u000a",
          "date" : "2026-09-10 11:06:27 +0800",
          "id" : "57eac5ba7f0d9fd8234826e02495d20a665cf084",
          "msg" : "Normalize numerical stop endpoints without erasing acceleration",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/lattice/lattice_trajectory1d.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_platoon.hpp",
            "data/config/cfg_platoon.cpp"
          ],
          "commitId" : "a20026508d3e1064b0023657af9fa6e6b41b1275",
          "timestamp" : 1789009597000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Add platoon safety and response configuration\u000a\u000aLoad and validate headway, braking recovery, response and gap-preview settings. Version the replay serialization while retaining older snapshot defaults.\u000a",
          "date" : "2026-09-10 11:06:37 +0800",
          "id" : "a20026508d3e1064b0023657af9fa6e6b41b1275",
          "msg" : "Add platoon safety and response configuration",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "Testing/platoon_follow_target_builder_test.cpp"
          ],
          "commitId" : "9f67a4e7930a7c5af80300d78b086a00d3ec15b8",
          "timestamp" : 1789009602000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Continue predicted leader braking until standstill\u000a\u000aKeep negative estimated acceleration beyond the nominal prediction-duration cutoff, controlled by continue_leader_braking. Test sustained braking and the disabled behavior.\u000a",
          "date" : "2026-09-10 11:06:42 +0800",
          "id" : "9f67a4e7930a7c5af80300d78b086a00d3ec15b8",
          "msg" : "Continue predicted leader braking until standstill",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/platoon/platoon_follow_target.cpp",
            "algorithm/platoon/platoon_follow_target_builder.cpp",
            "algorithm/platoon/platoon_reference_smoother.hpp",
            "Testing/platoon_follow_target_builder_test.cpp"
          ],
          "commitId" : "e78f387aa20fadc91864cf35ae2df181ef3c34fd",
          "timestamp" : 1789009608000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Smooth projected leader motion with consistent derivatives\u000a\u000aFit nonnegative leader velocities within acceleration bounds and reject excessive position correction. Derive interpolated position, speed and acceleration from one model, with a misaligned-motion regression.\u000a",
          "date" : "2026-09-10 11:06:48 +0800",
          "id" : "e78f387aa20fadc91864cf35ae2df181ef3c34fd",
          "msg" : "Smooth projected leader motion with consistent derivatives",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_follow_target.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_reference_smoother.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_safety.hpp",
            "algorithm/lattice/platoon_response.hpp",
            "Testing/platoon_safety_test.cpp",
            "algorithm/lattice/lattice.cpp",
            "algorithm/lattice/lattice.hpp",
            "CMakeLists.txt",
            "tasks/plan/lattice_task.cpp"
          ],
          "commitId" : "54569c422e514eb9fd91c38f3203b997400f4d7f",
          "timestamp" : 1789009625000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Guard platoon candidates with braking reserve and recovery hold\u000a\u000aAssess measured headway and braking clearance before mode selection and validate candidate response rollouts. Retain leader obstacle checks during fallback, cap recovery speed, and latch protection across planning stages. Add safety and recovery regressions.\u000a",
          "date" : "2026-09-10 11:07:05 +0800",
          "id" : "54569c422e514eb9fd91c38f3203b997400f4d7f",
          "msg" : "Guard platoon candidates with braking reserve and recovery hold",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/lattice_task.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_trajectory1d_generator.cpp"
          ],
          "commitId" : "176f859fb89471859bdc4ffada0ab1631997a40c",
          "timestamp" : 1789009646000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Preserve CACC stop feasibility at low-speed splices\u000a\u000aAllow brake-release jerk up to the physical bound when an inherited splice requires it. Compare endpoint roundoff in velocity units, normalize stop residue, and report detailed infeasibility diagnostics.\u000a",
          "date" : "2026-09-10 11:07:26 +0800",
          "id" : "176f859fb89471859bdc4ffada0ab1631997a40c",
          "msg" : "Preserve CACC stop feasibility at low-speed splices",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/data/platoon_130937.txt",
            "Testing/platoon_safety_test.cpp",
            "Testing/platoon_lattice_test.cpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "CMakeLists.txt",
            "Testing/data/platoon_130937_README.md"
          ],
          "commitId" : "26c475b97c41772612ff7e647d9c1511cc141246",
          "timestamp" : 1789009658000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Use vehicle response feedback and braking preview in CACC\u000a\u000aKeep output stitching separate from measured-state response prediction. Preview gap and braking reserve before accepting commands, and continue braking when extrapolating a short leader reference. Add measured-feedback, stop-recovery and recorded-failure regressions.\u000a",
          "date" : "2026-09-10 11:07:38 +0800",
          "id" : "26c475b97c41772612ff7e647d9c1511cc141246",
          "msg" : "Use vehicle response feedback and braking preview in CACC",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_130937_README.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_130937.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/widget/lattice_plan_detail.cpp",
            "hmi/widget/lattice_plan_detail.hpp"
          ],
          "commitId" : "bd62bf24d58dc54c5c0af734886eed6425f3c855",
          "timestamp" : 1789009670000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Show platoon headway history with fixed target-centered axes\u000a\u000aReplace the separate platoon gap and phase tabs with headway traces in platoon history. Display available headway alongside its minimum and fix the gap/headway axis ranges around configured targets.\u000a",
          "date" : "2026-09-10 11:07:50 +0800",
          "id" : "bd62bf24d58dc54c5c0af734886eed6425f3c855",
          "msg" : "Show platoon headway history with fixed target-centered axes",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hmi/widget/lattice_plan_detail.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/lattice_plan_detail.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/safety_fallback.md"
          ],
          "commitId" : "5261d92a5131222c52f4c73b4d7ac8ae8e0e65db",
          "timestamp" : 1789009674000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Document platoon safety and response-model behavior\u000a\u000aDescribe configuration, safety and recovery lifecycle, continuity rules, diagnostics, regression coverage and model limitations.\u000a",
          "date" : "2026-09-10 11:07:54 +0800",
          "id" : "5261d92a5131222c52f4c73b4d7ac8ae8e0e65db",
          "msg" : "Document platoon safety and response-model behavior",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/platoon/safety_fallback.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/routing_transition_test.cpp",
            "tasks/plan/ssep_task.cpp",
            "tasks/plan/ssep_task.hpp"
          ],
          "commitId" : "36dbddf7269c44be373058fbc7c99355e61674df",
          "timestamp" : 1789019489000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 隔离 SSEP 异步搜索的任务输入与结果\u000a\u000a发起搜索时复制配置、输入和场景信息，避免后台线程读取已切换任务的当前帧。\u000a记录搜索所属任务，丢弃旧任务晚到结果；接收成功但执行目标尚未切换时使用新任务 ID。\u000a\u000a补充旧任务结果丢弃、接收过渡帧及同任务重搜结果发布回归。\u000a",
          "date" : "2026-09-10 13:51:29 +0800",
          "id" : "36dbddf7269c44be373058fbc7c99355e61674df",
          "msg" : "fix: 隔离 SSEP 异步搜索的任务输入与结果",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "data/vehicle/request_routing_data.hpp",
            "data/ssep/open_space_ec.cpp",
            "Testing/routing_transition_test.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "data/vehicle/request_routing_data.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/map/pnc_map/routing_extension/routing_data.cpp",
            "CMakeLists.txt",
            "data/ssep/ssep_ec.cpp"
          ],
          "commitId" : "b4ee1eea7754b5ba523373bf35b170d0da295408",
          "timestamp" : 1789019514000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复起点偏移 open space 任务接收与车头交接\u000a\u000a先初始化接收路由的偏移信息，再校验方向，修复 VV086 任务因首车道航向差超过 90 度被提前拒绝。\u000a正常车道校验保留当前定位及历史执行车头，维持停车换头规则。\u000a\u000a双向 IMV 的 10/11 保留指定车头、12 允许初搜自动选择；搜索期间跟随当前分段，接回路由继承末段方向，重搜临时失去分段时保持执行方向。\u000a修正指定车头重搜姿态及前后轴轮角对应关系，并在新任务接收后失效旧搜索结果和 EC。\u000a\u000a补充 VV086 几何、正常车道方向组合、搜索方向生命周期和输入约束回归。刷新测试访问声明对应的头文件审计校验值，未改变协议字段。\u000a\u000a验证：routing、SSEP 与地图边界三组回归通过，pnc_node 构建成功。\u000a",
          "date" : "2026-09-10 13:51:54 +0800",
          "id" : "b4ee1eea7754b5ba523373bf35b170d0da295408",
          "msg" : "fix: 修复起点偏移 open space 任务接收与车头交接",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_trajectory_evaluator.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "algorithm/lattice/platoon_trajectory_evaluator.hpp",
            "data/config/cfg_platoon.cpp",
            "docs/platoon/time_headway_mpc.md",
            "Testing/platoon_test_safety.hpp",
            "data/config/cfg_platoon.hpp",
            "Testing/platoon_lattice_test.cpp",
            "config/platoon.yaml",
            "Testing/data/platoon_100156.txt",
            "Testing/platoon_follow_target_builder_test.cpp",
            "Testing/platoon_safety_test.cpp",
            "data/platoon/platoon_info.hpp",
            "data/platoon/platoon_info.cpp",
            "algorithm/lattice/platoon_safety.hpp",
            "data/platoon/platoon_follow_target.cpp",
            "algorithm/lattice/platoon_response.hpp",
            "hmi/widget/lattice_plan_detail.cpp",
            "algorithm/lattice/lattice.cpp",
            "algorithm/platoon/platoon_follow_target_builder.hpp",
            "algorithm/platoon/platoon_follow_target_builder.cpp",
            "algorithm/lattice/lattice.hpp",
            "docs/platoon/safety_fallback.md",
            "Testing/data/platoon_100156_README.md",
            "Testing/platoon_response_test.cpp",
            "hmi/widget/lattice_plan_detail.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp"
          ],
          "commitId" : "7a633a6c2a6da54393c4e30b80a2f6564018bdb4",
          "timestamp" : 1789020452000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Replace platoon CACC generator with time-headway MPC\u000a",
          "date" : "2026-09-10 14:07:32 +0800",
          "id" : "7a633a6c2a6da54393c4e30b80a2f6564018bdb4",
          "msg" : "Replace platoon CACC generator with time-headway MPC",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_100156.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory_evaluator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/lattice_plan_detail.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory_evaluator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_follow_target.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_test_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_100156_README.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            },
            {
              "editType" : "add",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/safety_fallback.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/lattice_plan_detail.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "Testing/data/platoon_054525_entry_README.md",
            "docs/platoon/time_headway_mpc.md",
            "Testing/data/platoon_054525_entry.txt"
          ],
          "commitId" : "a3093405ca03a62d8d95ab6cdedec3a399a16d1d",
          "timestamp" : 1789022614000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Fix platoon MPC entry convergence and terminal braking feasibility\u000a",
          "date" : "2026-09-10 14:43:34 +0800",
          "id" : "a3093405ca03a62d8d95ab6cdedec3a399a16d1d",
          "msg" : "Fix platoon MPC entry convergence and terminal braking feasibility",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_054525_entry.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_054525_entry_README.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_qp_polish.hpp",
            "Testing/platoon_safety_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "data/vehicle/vehicle_chassis.cpp",
            "Testing/data/platoon_065928_constraints_README.md",
            "algorithm/lattice/platoon_response.hpp",
            "algorithm/lattice/lattice.cpp",
            "docs/platoon/time_headway_mpc.md",
            "Testing/platoon_test_safety.hpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_response_safety.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "Testing/data/platoon_065928_constraints.txt"
          ],
          "commitId" : "ef3e97bb28b9121339d560811f73e8eb505f941d",
          "timestamp" : 1789029084000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Fix platoon MPC speed-limit exits and response safety alignment\u000a",
          "date" : "2026-09-10 16:31:24 +0800",
          "id" : "ef3e97bb28b9121339d560811f73e8eb505f941d",
          "msg" : "Fix platoon MPC speed-limit exits and response safety alignment",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_065928_constraints.txt"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_response_safety.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_065928_constraints_README.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_chassis.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_test_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/CMakeLists.txt"
          ],
          "commitId" : "735a09688c39fe8c65023d8ee19c7343dcb60cfa",
          "timestamp" : 1789031693000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复 ARM 回放共享库链接 CUDA 静态库失败\u000a\u000a为 ssep_gpu_lib 开启 POSITION_INDEPENDENT_CODE，使 CUDA 宿主代码使用 -fPIC，修复 ARM 上链接回放共享库时的重定位错误。顶层 CMAKE_CXX_FLAGS 不覆盖 .cu 编译。\u000a\u000a已通过 CMake 配置、diff 检查及 x86 CUDA 静态库链接共享库最小验证；ARM 完整构建待服务器复验。\u000a",
          "date" : "2026-09-10 17:14:53 +0800",
          "id" : "735a09688c39fe8c65023d8ee19c7343dcb60cfa",
          "msg" : "fix: 修复 ARM 回放共享库链接 CUDA 静态库失败",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_qp_polish.hpp",
            "Testing/data/platoon_083648_constraints_README.md",
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "Testing/data/platoon_083648_constraints.txt",
            "docs/platoon/time_headway_mpc.md"
          ],
          "commitId" : "14cc7c2a27e9f93b3d29381690576332b2a91810",
          "timestamp" : 1789032535000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Improve platoon MPC convergence at speed ceilings\u000a",
          "date" : "2026-09-10 17:28:55 +0800",
          "id" : "14cc7c2a27e9f93b3d29381690576332b2a91810",
          "msg" : "Improve platoon MPC convergence at speed ceilings",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_083648_constraints.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_qp_polish.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_083648_constraints_README.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/platoon_safety.hpp",
            "Testing/platoon_safety_test.cpp",
            "data/config/cfg_platoon.cpp",
            "algorithm/lattice/lattice.cpp",
            "docs/platoon/time_headway_mpc.md",
            "data/config/cfg_platoon.hpp",
            "algorithm/lattice/lattice.hpp",
            "config/platoon.yaml"
          ],
          "commitId" : "9afb96bdbecf221d1126368f67f4668e40164b7a",
          "timestamp" : 1789035004000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Remove persistent platoon safety latch\u000a",
          "date" : "2026-09-10 18:10:04 +0800",
          "id" : "9afb96bdbecf221d1126368f67f4668e40164b7a",
          "msg" : "Remove persistent platoon safety latch",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_build_profiles.md",
            "CMakeLists.txt",
            "Taskfile.yml"
          ],
          "commitId" : "db7140a64f1543a7dd6f93ca5b9660d9145d73dd",
          "timestamp" : 1789035526000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "build: 默认仅构建和安装 PNC 线上程序\u000a\u000a新增默认关闭的 PNC_BUILD_OFFLINE_TOOLS 开关，默认构建和安装仅保留 node、replayer、scene_vis_server。离线对象库按消费者依赖编译，开发目标仍可显式构建，开启开关可恢复全量工具和 SDK 安装。\u000a\u000a保留测试独立开关及 embedded SDK 的 compat 构建路径，补充线上构建任务和发布目录说明。已验证三个线上目标构建、全新暂存安装、开关切换及测试依赖；telediagnostic 依赖链已静态核对，未重编整个工程。\u000a",
          "date" : "2026-09-10 18:18:46 +0800",
          "id" : "db7140a64f1543a7dd6f93ca5b9660d9145d73dd",
          "msg" : "build: 默认仅构建和安装 PNC 线上程序",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/pnc_build_profiles.md"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "proto/plan_data.proto",
            "data/app/fsm/motion_fsm/motion_fsm.cpp",
            "data/ssep/out_yard_junction_ec.cpp",
            "data/vehicle/deviation_status.cpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "data/ssep/ssep_common.hpp",
            "data/ssep/seaside_junction_ec.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "tasks/other_tasks/stitch_trailer_path_to_ref_line.cpp",
            "data/ssep/open_space_ec.cpp",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "tasks/other_tasks/stitch_path_to_reference_line.cpp",
            "tasks/deciders/search_decider/reverse_search_decider.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "data/ssep/ssep_ec.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp",
            "data/ssep/ssep_ec.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.cpp",
            "Testing/ssep_path_corridor_test.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "tasks/deciders/search_decider/search_decider_lifecycle.cpp",
            "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "data/ssep/normal_junction_ec.cpp",
            "data/ssep/bridge_junction_ec.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "tasks/deciders/long_decider/constrain_decider.cpp",
            "docs/ssep_search_lifecycle.md",
            "Testing/routing_map_guard_test.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "data/ssep/into_yard_junction_ec.cpp",
            "common/util/express.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "ffc82d3f0353a69ab1d90f9268c5f2aedeb37f56",
          "timestamp" : 1789040197000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 同路口重搜先停稳并从当前定位构建起点\u000a\u000a仅对当前路口内同任务重搜进入 TO_MOTIONLESS，连续搜索与 fallback 保留原流程。\u000a等待请求跨输入异常与阶段重置保留，由停止线负责停车，停稳后再构造环境。\u000a统一定位起点与轮角校验，同步状态编码、场景回放生成物及生命周期回归。\u000a",
          "date" : "2026-09-10 19:36:37 +0800",
          "id" : "ffc82d3f0353a69ab1d90f9268c5f2aedeb37f56",
          "msg" : "fix: 同路口重搜先停稳并从当前定位构建起点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/motion_fsm/motion_fsm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "common/util/express.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/seaside_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/bridge_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_to_reference_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_trailer_path_to_ref_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_map_guard_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/deviation_status.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_common.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/reference_line_replan_test.cpp",
            "tasks/other_tasks/stitch_path_to_reference_line.hpp",
            "tasks/other_tasks/stitch_path_to_reference_line.cpp",
            "Testing/fixtures/stitch_52851_offset_replan.hpp",
            "docs/ssep_search_lifecycle.md"
          ],
          "commitId" : "2c9028f468748a19e17b8d322b8c23c2971ba8b7",
          "timestamp" : 1789040216000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留车后弯道并平滑拼接 SSEP 参考线\u000a\u000a保持准确搜索首点与前方路径，优先沿历史和原参考线补足后视范围。\u000a逐步调整车后连接锚点并校验去重后的实际接缝，移除整段搜索头切线兜底。\u000a加入任务 52851 几何 fixture、大偏移、短历史、弯道及换头回归。\u000a",
          "date" : "2026-09-10 19:36:56 +0800",
          "id" : "2c9028f468748a19e17b8d322b8c23c2971ba8b7",
          "msg" : "fix: 保留车后弯道并平滑拼接 SSEP 参考线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_to_reference_line.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/fixtures/stitch_52851_offset_replan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_to_reference_line.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "tasks/plan/keb_path_optimize_task.hpp",
            "docs/ssep_search_lifecycle.md",
            "tasks/plan/keb_path_optimize_task.cpp"
          ],
          "commitId" : "2d26dfb54d41917a06e60f1ab9c36ad017017bad",
          "timestamp" : 1789040238000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: SSEP 重搜期间复用有效 KEB 历史路径\u000a\u000a校验任务、方向、姿态及剩余长度，补齐车辆至优化首点的历史前缀后写回。\u000a新 SSEP 完成但尚未成功接入时继续保持，接替后释放旧优化输出；失效时按原策略兜底。\u000a补充连续等待、前缀接头、输入失效和新结果接替回归。\u000a",
          "date" : "2026-09-10 19:37:18 +0800",
          "id" : "2d26dfb54d41917a06e60f1ab9c36ad017017bad",
          "msg" : "fix: SSEP 重搜期间复用有效 KEB 历史路径",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/imv_general_planner.h",
            "ssep/keb_optimizer/imv_keb_optimizer.cc",
            "ssep/keb_optimizer/imv_keb_optimizer.h",
            "ssep/keb_optimizer/keb_problem.h",
            "Testing/imv_keb_start_derivatives_test.cpp",
            "CMakeLists.txt",
            "docs/ssep_search_lifecycle.md",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "1124716aaedfe26f79f04c4f26944358b3442658",
          "timestamp" : 1789040258000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 优化 SSEP KEB 首段转向状态变化率\u000a\u000aIMV General 保持既有首点姿态、曲率和 beta，允许首 pinch 与 beta_dot 在限值内优化。\u000a初始导数收紧到合法范围，其他调用默认保留首点全固定行为。\u000a仅调整 KEB 优化，不修改轮角传输、操作头转换或粗搜索接口，并覆盖正反向及默认兼容测试。\u000a",
          "date" : "2026-09-10 19:37:38 +0800",
          "id" : "1124716aaedfe26f79f04c4f26944358b3442658",
          "msg" : "fix: 优化 SSEP KEB 首段转向状态变化率",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "add",
              "file" : "Testing/imv_keb_start_derivatives_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/long_target_calculator.cpp",
            "algorithm/platoon/platoon_qp_polish.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "data/platoon/platoon_follow_target.hpp",
            "algorithm/lattice/longitudinal_curve_validator.hpp",
            "algorithm/lattice/jerk_limited_stop.hpp",
            "CMakeLists.txt",
            "algorithm/platoon/platoon_response_safety.cpp",
            "algorithm/platoon/leader_reference.cpp",
            "algorithm/platoon/platoon_safety.hpp",
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/leader_reference.hpp",
            "algorithm/platoon/jerk_limited_stop.hpp",
            "algorithm/platoon/command_history.hpp",
            "algorithm/platoon/platoon_response_safety.hpp",
            "tasks/plan/lattice_task.cpp",
            "algorithm/platoon/curve_kinematics.hpp",
            "algorithm/lattice/platoon_qp_polish.hpp",
            "Testing/platoon_safety_test.cpp",
            "algorithm/platoon/longitudinal_mpc.cpp",
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/platoon/mpc_config.hpp",
            "Testing/jerk_limited_stop_test.cpp",
            "algorithm/lattice/stop_profile_planner.hpp",
            "algorithm/lattice/platoon_safety.hpp",
            "data/platoon/platoon_follow_target.cpp",
            "algorithm/lattice/platoon_response.hpp",
            "algorithm/lattice/lattice.cpp",
            "algorithm/platoon/speed_limits.hpp",
            "algorithm/lattice/lattice.hpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "algorithm/lattice/platoon_response_safety.hpp",
            "algorithm/platoon/platoon_response.hpp",
            "algorithm/platoon/longitudinal_mpc.hpp"
          ],
          "commitId" : "6eaa935cf44922198166c78bd32fb915f258657c",
          "timestamp" : 1789041596000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Extract MPC solver into algorithm/platoon and remove lattice forwarding files\u000a",
          "date" : "2026-09-10 19:59:56 +0800",
          "id" : "6eaa935cf44922198166c78bd32fb915f258657c",
          "msg" : "Extract MPC solver into algorithm/platoon and remove lattice forwarding files",
          "paths" : [
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_response_safety.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/lattice/platoon_response_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/long_target_calculator.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/speed_limits.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "delete",
              "file" : "data/platoon/platoon_follow_target.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_follow_target.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/lattice_task.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/command_history.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/lattice/platoon_qp_polish.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/jerk_limited_stop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/stop_profile_planner.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc_config.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/longitudinal_curve_validator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/lattice/platoon_safety.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_response_safety.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/curve_kinematics.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/lattice/jerk_limited_stop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/leader_reference.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/leader_reference.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/lattice/platoon_response.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/qp_solver.hpp",
            "algorithm/platoon/longitudinal_mpc.cpp",
            "algorithm/platoon/qp_solver.cpp",
            "docs/platoon/time_headway_mpc.md",
            "Testing/platoon_qp_solver_test.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "385069cb37efe2b4eb4542d42ee4452ba09d69da",
          "timestamp" : 1789043006000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Extract independent QP solver from longitudinal MPC\u000a",
          "date" : "2026-09-10 20:23:26 +0800",
          "id" : "385069cb37efe2b4eb4542d42ee4452ba09d69da",
          "msg" : "Extract independent QP solver from longitudinal MPC",
          "paths" : [
            {
              "editType" : "add",
              "file" : "algorithm/platoon/qp_solver.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/longitudinal_mpc.cpp",
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/platoon/longitudinal_mpc_validation.cpp",
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/longitudinal_mpc_internal.hpp",
            "algorithm/platoon/longitudinal_mpc_prepare.cpp",
            "algorithm/platoon/longitudinal_mpc_rollout.cpp",
            "algorithm/platoon/longitudinal_mpc_qp.cpp",
            "CMakeLists.txt",
            "algorithm/platoon/longitudinal_mpc.hpp"
          ],
          "commitId" : "1798a3c066eb3392e36fec0354766a879046c895",
          "timestamp" : 1789044043000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Split longitudinal MPC generation into maintainable cycle stages\u000a",
          "date" : "2026-09-10 20:40:43 +0800",
          "id" : "1798a3c066eb3392e36fec0354766a879046c895",
          "msg" : "Split longitudinal MPC generation into maintainable cycle stages",
          "paths" : [
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc_internal.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc_rollout.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc_qp.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc_validation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/longitudinal_mpc_prepare.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/longitudinal_mpc.cpp",
            "algorithm/platoon/longitudinal_mpc_validation.cpp",
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/longitudinal_mpc_internal.hpp",
            "algorithm/platoon/longitudinal_mpc_prepare.cpp",
            "algorithm/platoon/longitudinal_mpc_rollout.cpp",
            "algorithm/platoon/longitudinal_mpc_qp.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "346364987e2bf062f83a9eb97dd645007633bc21",
          "timestamp" : 1789044326000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Consolidate MPC stages into longitudinal_mpc.cpp\u000a",
          "date" : "2026-09-10 20:45:26 +0800",
          "id" : "346364987e2bf062f83a9eb97dd645007633bc21",
          "msg" : "Consolidate MPC stages into longitudinal_mpc.cpp",
          "paths" : [
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc_prepare.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc_rollout.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc_internal.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc_qp.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc_validation.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/longitudinal_mpc.cpp",
            "algorithm/platoon/longitudinal_mpc.hpp"
          ],
          "commitId" : "0d27b36cc302441a7459936d3fbfd470973ec750",
          "timestamp" : 1789045342000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Merge MPC cycle stages into LongitudinalMpc\u000a",
          "date" : "2026-09-10 21:02:22 +0800",
          "id" : "0d27b36cc302441a7459936d3fbfd470973ec750",
          "msg" : "Merge MPC cycle stages into LongitudinalMpc",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/longitudinal_mpc.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h",
            "ssep/test/CMakeLists.txt",
            "ssep/offboard/ssep_planner_wrapper.cc",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/data_structures/ssep_input.cc",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/maps/ogm_builder.cc",
            "Testing/search_decider_lifecycle_test.cpp",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "data/ssep/ssep_ec.hpp",
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h",
            "ssep/scenarios/tractor_trailer_parking_curvature.h",
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/scenarios/tractor_trailer_parking_maneuver.h",
            "data/ssep/forward_ec.cpp",
            "ssep/maps/ogm.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/maps/ogm.cc",
            "docs/ssep_scenario_config_lifecycle.md",
            "ssep/test/ssep_planner_test.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/ssep_planner.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "d75778feffec805a3ef4323aede4f58cb33feed9",
          "timestamp" : 1789095167000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 新增可配置的倒车优先拖挂停车策略\u000a\u000a通过 ReversePriority 显式启用独立搜索器和规划器，修复假途经点、零米及短距离拉直、短路径起点偏移。\u000a首轮允许双向搜索且不限制前进调整次数，换向代价逐次翻倍，按累计代价和换向次数进行支配剪枝。\u000a保持用户倒车曲率限制，加强优化几何约束，并在输出前检查完整车头和挂车的连续扫掠碰撞。\u000a区分原始线段、独立栅格占用和 access 清除语义，保留旧场景默认行为。\u000a\u000a验证：56 项 C++ 测试通过，pnc_node 和离线回放程序构建通过，两份现场及短距离回放通过。\u000a",
          "date" : "2026-09-11 10:52:47 +0800",
          "id" : "d75778feffec805a3ef4323aede4f58cb33feed9",
          "msg" : "feat: 新增可配置的倒车优先拖挂停车策略",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_input.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/tractor_trailer_parking_curvature.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/tractor_trailer_parking_maneuver.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            },
            {
              "editType" : "add",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_planner_wrapper.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.h"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_scenario_config_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/parking_collision_quality.py",
            "ssep/test/local_regression/README.md",
            "docs/ssep_jinxi_20260911_parking.md",
            "ssep/test/local_regression/tt_parking_quality.py",
            "ssep/test/local_regression/run_tt_single_parking_case.py",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/tt_reverse_priority_manifest.tsv",
            "ssep/test/local_regression/tt_reverse_priority_tail0_quality.json",
            "ssep/test/local_regression/tt_reverse_priority_tail1_quality.json",
            "ssep/test/local_regression/test_parking_maneuver.py",
            "ssep/test/local_regression/test_parking_geometric_curvature.py",
            "ssep/test/local_regression/tt_reverse_priority_cases.json",
            "ssep/test/local_regression/test_parking_collision_quality.py",
            "ssep/test/local_regression/test_tt_parking_regression.py"
          ],
          "commitId" : "f33a41d5c3a2946198b43893290ca8246a18ea2e",
          "timestamp" : 1789095192000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 收录金玺拖挂停车场景并完善物理质量回归\u000a\u000a将两份现场记录和两个短距离合成场景登记为正式回归清单，按共享数据目录保存原始文件及 SHA-256 来源记录。\u000a扩展统一运行器，显式应用场景参数且保持源数据不变，支持不限路径段数的 TT 停车验收。\u000a独立检查运动方向、起终点两航向、曲率及完整车身扫掠碰撞，修复近直线微小转角的数值退化。\u000a增加参数覆盖、源文件校验、异常输出和旧运行器兼容性测试，并记录运行方式。\u000a\u000a验证：全部 50 项 Python 测试及统一清单 4 个场景回放通过，归档文件 SHA-256 前后保持一致。\u000a",
          "date" : "2026-09-11 10:53:12 +0800",
          "id" : "f33a41d5c3a2946198b43893290ca8246a18ea2e",
          "msg" : "test: 收录金玺拖挂停车场景并完善物理质量回归",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/ssep_jinxi_20260911_parking.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_parking_collision_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reverse_priority_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_parking_maneuver.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reverse_priority_cases.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reverse_priority_tail0_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_tt_parking_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/run_tt_single_parking_case.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/parking_collision_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_parking_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reverse_priority_tail1_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_parking_geometric_curvature.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/platoon_qp_polish.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "CMakeLists.txt",
            "algorithm/platoon/qp_solver.hpp",
            "algorithm/platoon/platoon_response_safety.cpp",
            "algorithm/platoon/qp_solver.cpp",
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/mpc/platoon_response.hpp",
            "algorithm/platoon/command_history.hpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/platoon_qp_solver_test.cpp",
            "algorithm/platoon/mpc/command_history.hpp",
            "algorithm/platoon/platoon_response_safety.hpp",
            "algorithm/platoon/mpc/qp_solver.hpp",
            "algorithm/platoon/curve_kinematics.hpp",
            "algorithm/platoon/mpc/mpc_config.hpp",
            "algorithm/platoon/longitudinal_mpc.cpp",
            "algorithm/platoon/mpc/platoon_response_safety.cpp",
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/platoon/mpc_config.hpp",
            "algorithm/platoon/mpc/longitudinal_mpc.hpp",
            "algorithm/platoon/mpc/platoon_response_safety.hpp",
            "algorithm/lattice/lattice.cpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/platoon/longitudinal_mpc.hpp",
            "algorithm/platoon/platoon_response.hpp"
          ],
          "commitId" : "305301f0c49544be3a54b31813341cc713c933e7",
          "timestamp" : 1789095814000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Group platoon MPC implementation under mpc directory\u000a",
          "date" : "2026-09-11 11:03:34 +0800",
          "id" : "305301f0c49544be3a54b31813341cc713c933e7",
          "msg" : "Group platoon MPC implementation under mpc directory",
          "paths" : [
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/platoon_response_safety.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/mpc_config.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/command_history.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/platoon_response_safety.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/platoon_response_safety.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/qp_solver.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/platoon_response_safety.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/qp_solver.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/platoon_response.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/qp_solver.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/command_history.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/mpc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/curve_kinematics.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/platoon_qp_polish.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "sink/ros_sink_trajectory.cpp"
          ],
          "commitId" : "1971b35c269c36f285a9ec802041eaf02ae39800",
          "timestamp" : 1789105499000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/liuhongshuo",
            "fullName" : "liuhongshuo"
          },
          "authorEmail" : "liuhongshuo",
          "comment" : "fix: 规划帧时间被发布时刻替换问题\u000a",
          "date" : "2026-09-11 13:44:59 +0800",
          "id" : "1971b35c269c36f285a9ec802041eaf02ae39800",
          "msg" : "fix: 规划帧时间被发布时刻替换问题",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_trajectory.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "plan/prepare/prepare_status.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "config/config_imv/plan.yaml",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "data/config/cfg_safe_const.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "data/config/cfg_safe_const.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "12bb70597490c8c5d24c3fa732b290224948b355",
          "timestamp" : 1789106395000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持配置低安全阈值区域前后余量\u000a\u000a低安全阈值区域交集判定默认向车头前方扩展 5 米、车尾后方扩展 0.5 米，支持独立 ROS 参数配置，负值按 0 使用。\u000a\u000a同步 Full 与 Compact 配置合同、编解码和生成产物，确保 Recorded 与 Candidate 回放恢复相同余量；补充默认值与非默认值回放测试。\u000a\u000a验证：工程任务入口编译通过，生成物及 Proto 兼容性检查通过；回放基础测试合计 241 项通过，1 项因缺少可选 bag 跳过。\u000a",
          "date" : "2026-09-11 13:59:55 +0800",
          "id" : "12bb70597490c8c5d24c3fa732b290224948b355",
          "msg" : "feat: 支持配置低安全阈值区域前后余量",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_safe_const.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_safe_const.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "config/config_imv/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_status.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/app/fsm/task_fsm/task_fsm.cpp"
          ],
          "commitId" : "b413d88eaddcf42f4cfa888ec9f8a63298a0728e",
          "timestamp" : 1789106523000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 允许无途径点的充电任务从行驶进入对准\u000a\u000aTravel2Align 不再无条件排除 TO_CHARGE；充电任务存在 parking 或 bulk 途径点时继续禁止进入，均不存在时按原有目标有效性、对准距离等条件判断。\u000a\u000a验证：通过工程 task 指定的 pnc-build.sh 构建 pnc_node，暂存 diff 检查通过。\u000a",
          "date" : "2026-09-11 14:02:03 +0800",
          "id" : "b413d88eaddcf42f4cfa888ec9f8a63298a0728e",
          "msg" : "fix: 允许无途径点的充电任务从行驶进入对准",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_fsm/task_fsm.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/scenario/scenario_planner_condition.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "Testing/scenario_search_exit_test.cpp",
            "data/scenario/scenario_planner_action.cpp",
            "data/scenario/scenario_planner_condition.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "35ddf42fe25dd19dac7c4200f2e72eab9db6f83c",
          "timestamp" : 1789115129000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复禁搜路口及重搜等待期间的场景退出\u000a\u000a搜索场景退出与入口共用准入判断，目标禁搜时保留旧路径收尾，\u000a同类型区域也检查搜索终点、偏离及路径失效条件。\u000a\u000a重搜清空原始路径后，使用有效活动缓存或已下发路径判断退出，\u000a保留结果消费和失败回退机会，避免引用更早路口的备份终点。\u000a补充岸边路径结构与规划器切换校验，并刷新头文件审计指纹。\u000a\u000a新增 102 个场景退出回归用例；完整回归目标 241 项通过、\u000a13 项按条件跳过，pnc_node 构建通过。\u000a",
          "date" : "2026-09-11 16:25:29 +0800",
          "id" : "35ddf42fe25dd19dac7c4200f2e72eab9db6f83c",
          "msg" : "fix: 修复禁搜路口及重搜等待期间的场景退出",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_planner_action.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_planner_condition.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/scenario_search_exit_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_planner_condition.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt",
            "Testing/continuous_junction_replan_test.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp"
          ],
          "commitId" : "4b80487e9d0b1e2727a74894101e6d7e6f17e245",
          "timestamp" : 1789115144000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 禁止禁搜目标触发连续路口自动重搜\u000a\u000a普通及桥梁连续路口重搜复用搜索准入条件，在冷却判断前\u000a拦截禁搜目标的自动请求，避免地图变化等后续判定绕过。\u000a保留正在执行的重搜上下文、活动路径及人工重搜语义。\u000a\u000a新增 17 个回归用例，覆盖禁搜路口配置、功能开关、冷却残留、\u000a地图变化绕过和活动路径保持。完整回归目标 241 项通过、\u000a13 项按条件跳过，pnc_node 构建通过。\u000a",
          "date" : "2026-09-11 16:25:44 +0800",
          "id" : "4b80487e9d0b1e2727a74894101e6d7e6f17e245",
          "msg" : "fix: 禁止禁搜目标触发连续路口自动重搜",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/continuous_junction_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_objs.cpp",
            "plan/prepare/prepare_objs.hpp",
            "Testing/crane_lane_policy_test.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "278505d8b8fa6b93f61a18676976cbecddff8859",
          "timestamp" : 1789117564000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 非最右侧车道缩小龙门吊判断阈值\u000a\u000a使用上一帧 PNC local 已匹配的 section 和 current_idx 判断车辆\u000a是否处于最右侧车道，不再进行实时车道匹配。\u000a同侧龙门吊在车辆处于内侧车道时缩小阈值；保留逆向一侧及\u000a特殊区域的原有缩阈值规则，多项条件命中只扣减一次。\u000a\u000a每帧复用车道判断结果和历史车道列表，补充桥腿轮廓及地图数据\u000a缺失时的防御检查。新增基于 PNC local section 的回归测试，\u000a覆盖车道索引边界、前后帧车道差异、逆向及重复扣减条件。\u000a\u000a验证：20 项龙门吊阈值回归测试全部通过，pnc_node 构建通过。\u000a",
          "date" : "2026-09-11 17:06:04 +0800",
          "id" : "278505d8b8fa6b93f61a18676976cbecddff8859",
          "msg" : "fix: 非最右侧车道缩小龙门吊判断阈值",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/crane_lane_policy_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_objs.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_objs.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/live_compact_ingress.cpp",
            "replayer/sdk/planframe_compat.hpp",
            "replayer/scene_data/pnc_map_decode_scope.hpp",
            "Testing/planframe_compat_test.cpp",
            "replayer/sdk/planframe_compat.cpp"
          ],
          "commitId" : "771e5d3b0bc2e22b93f582ca535bb211e4aa132b",
          "timestamp" : 1789368459000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 兼容不同来源版本的快照显示\u000a\u000a为远望新增 Recorded 显示策略，解除输入 PNC 版本和提交号与 SDK 构建身份的硬绑定，仍按实际 schema 和 encoding 选择解码器并检查数据完整性。\u000a\u000a沿用当前地图解析，允许显示阶段保留无法匹配的历史车道引用；重建失败时从原始 Proto 重新解码记录数据，避免输出部分重建帧。来源或 anchor 上下文变化时重置历史，并保持 Candidate 与严格地图校验隔离。\u000a\u000a验证：SDK 与远望构建通过，18 项 SDK 测试通过；本地链路覆盖来源差异、地图差异、失效车道和字段增删。\u000a",
          "date" : "2026-09-14 14:47:39 +0800",
          "id" : "771e5d3b0bc2e22b93f582ca535bb211e4aa132b",
          "msg" : "fix: 兼容不同来源版本的快照显示",
          "paths" : [
            {
              "editType" : "add",
              "file" : "replayer/scene_data/pnc_map_decode_scope.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/sdk/planframe_compat.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/sdk/planframe_compat.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/planframe_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/live_compact_ingress.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/generate_plan_frame_persistence_catalog.py",
            "docs/pnc_algorithm_replay/proto_generation.md",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
          ],
          "commitId" : "5cb8bd106e64e63319a6df43fd84c06e068d4604",
          "timestamp" : 1789368459000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 固化正式 Proto 基线的字段增删兼容规则\u000a\u000a以 schema 1 / encoding 3 为正式上线基线，在文档生成器中固定兼容约束并同步生成目录和字段变更流程。\u000a\u000a明确字段号不可复用、删除需 reserved、新增须定义缺省行为，禁止原地更改类型、单位、坐标系和语义；区分快照显示兼容与 native ABI、Candidate 合同。开发期 encoding 2 不纳入范围。\u000a\u000a验证：生成器一致性检查及 2 项生成测试通过。\u000a",
          "date" : "2026-09-14 14:47:39 +0800",
          "id" : "5cb8bd106e64e63319a6df43fd84c06e068d4604",
          "msg" : "docs: 固化正式 Proto 基线的字段增删兼容规则",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generate_plan_frame_persistence_catalog.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/switch_data.hpp",
            "tasks/deciders/lat_decider/switching_bounds_decider.cpp",
            "data/scenario/scenario_planner_action.cpp",
            "data/plan/switch_data.cpp",
            "Testing/platoon_lane_change_collision_test.cpp",
            "data/platoon/platoon_info.hpp",
            "data/platoon/platoon_info.cpp",
            "CMakeLists.txt",
            "algorithm/platoon/platoon_leader_predictor.hpp",
            "data/config/cfg_platoon.cpp",
            "data/lattice/path_time_graph.hpp",
            "sink/ros_sink_platoon_lane_change.hpp",
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "sink/ros_sink_platoon_lane_change.cpp",
            "data/config/cfg_platoon.hpp",
            "docs/platoon/lane_change.md",
            "plan/scenarios/prepare_scenario.cpp",
            "Testing/platoon_lane_change_test.cpp",
            "config/platoon.yaml",
            "plan/prepare/prepare_platoon.cpp",
            "sink/module.cpp",
            "launch/pnc_test.launch.py",
            "Testing/platoon_follow_target_builder_test.cpp",
            "Testing/platoon_lane_change_test_peer.hpp"
          ],
          "commitId" : "2b1fd33f571c66ae26ac740e7fd6e8ab5c30183f",
          "timestamp" : 1789369803000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(platoon): follow leader lane-change anchors\u000a",
          "date" : "2026-09-14 15:10:03 +0800",
          "id" : "2b1fd33f571c66ae26ac740e7fd6e8ab5c30183f",
          "msg" : "feat(platoon): follow leader lane-change anchors",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "sink/module.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/lat_decider/switching_bounds_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_planner_action.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "launch/pnc_test.launch.py"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_lane_change_test_peer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/path_time_graph.hpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_platoon_lane_change.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.hpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_platoon_lane_change.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/lane_change.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_lane_change_collision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/scenarios/prepare_scenario.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/long_decider/constrain_decider.cpp",
            "docs/platoon/lane_change.md",
            "Testing/platoon_lane_change_collision_test.cpp",
            "data/plan/switch_data.cpp"
          ],
          "commitId" : "41d5a6d7891609dfdc014c4a1e3f32f235d668a3",
          "timestamp" : 1789378928000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "debug(platoon): trace lane-change slowdown and exclude leader from acceptance checks\u000a",
          "date" : "2026-09-14 17:42:08 +0800",
          "id" : "41d5a6d7891609dfdc014c4a1e3f32f235d668a3",
          "msg" : "debug(platoon): trace lane-change slowdown and exclude leader from acceptance checks",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_collision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/lane_change.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "Testing/jerk_limited_stop_test.cpp",
            "data/lattice/longitudinal_curve_validator.hpp"
          ],
          "commitId" : "6908e3236f394f2c8c3112d1482169148cf920f3",
          "timestamp" : 1789383682000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 限制纵向候选校验采样量以防止规划长时间阻塞\u000a\u000a对超过 10000 个采样点的候选在计算前整条拒绝，记录预算失败原因，并改用有界整数索引采样。拒绝非法采样步长，保留完整停车时域的动态约束检查。\u000a\u000a补充超长滑行停车、采样预算边界、非法步长和极短曲线回归，补齐旧用例的有效采样配置，并刷新数据头文件审计哈希。\u000a\u000a验证：pnc_node 编译通过，84 项纵向停车相关回归全部通过。此提交修复已确认的计算量风险，不代表洋浦 VV079 现场卡住根因已完全闭环。\u000a",
          "date" : "2026-09-14 19:01:22 +0800",
          "id" : "6908e3236f394f2c8c3112d1482169148cf920f3",
          "msg" : "fix: 限制纵向候选校验采样量以防止规划长时间阻塞",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/longitudinal_curve_validator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.hpp",
            "algorithm/platoon/platoon_reference_smoother.hpp",
            "data/plan/switch_data.cpp",
            "Testing/platoon_lane_change_collision_test.cpp",
            "tasks/deciders/long_decider/constrain_decider.cpp",
            "algorithm/lattice/lattice.cpp",
            "docs/platoon/lane_change.md",
            "Testing/platoon_lane_change_test.cpp",
            "algorithm/platoon/platoon_follow_target_builder.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "data/common/path.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "plan/prepare/prepare_platoon.cpp",
            "Testing/platoon_qp_solver_test.cpp",
            "data/plan/path_data.cpp",
            "algorithm/platoon/mpc/qp_solver.hpp",
            "Testing/platoon_follow_target_builder_test.cpp",
            "Testing/platoon_lane_change_test_peer.hpp"
          ],
          "commitId" : "0423ad64a4b577e7722f273fd79688e44b4e2a34",
          "timestamp" : 1789437788000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): stabilize lane-change tracking and braking MPC\u000a\u000aCover the final partial path interval and avoid duplicate resampled endpoints.\u000aPreserve configured platoon lane-change speed caps through fallback and retain\u000aleader identity during lane-change acceptance checks.\u000a\u000aKeep warm starts and optimization updates forward-feasible, generate a bounded\u000acontinuation beyond accepted history, and stop reusing rejected full proposals.\u000aPreserve stitched initial states, solver deadlines, and nonlinear safety checks.\u000a\u000aRemove verbose trajectory, projection, and recurring slowdown/MPC trace dumps;\u000aretain concise failure diagnostics. Add regression coverage and document\u000avalidation, including the outstanding recorded-reference required=inf failure.\u000a",
          "date" : "2026-09-15 10:03:08 +0800",
          "id" : "0423ad64a4b577e7722f273fd79688e44b4e2a34",
          "msg" : "fix(platoon): stabilize lane-change tracking and braking MPC",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_reference_smoother.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_collision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/lane_change.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/path.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test_peer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/bend_mpc_replay_results.csv",
            "tools/platoon_mpc_replay.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "Testing/data/platoon_mpc/stationary_release.csv",
            "CMakeLists.txt",
            "docs/platoon/failure_csv.md",
            "Testing/data/platoon_mpc/release_boundary.csv",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/data/platoon_mpc/bend_entry.csv",
            "tasks/plan/lattice_task.cpp",
            "Testing/data/platoon_mpc/uncontrollable_limit.csv",
            "Testing/data/platoon_mpc/bend_speed_limit.csv",
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/lattice/platoon_failure_csv.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.hpp",
            "Testing/data/platoon_mpc/leader_braking.csv",
            "Testing/data/platoon_mpc/release_roundoff.csv",
            "Testing/platoon_failure_case_test.cpp",
            "Testing/data/platoon_mpc/insufficient_reserve.csv",
            "algorithm/platoon/mpc/failure_case.cpp",
            "algorithm/platoon/mpc/failure_case.hpp",
            "algorithm/lattice/lattice.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "algorithm/lattice/platoon_failure_csv.hpp",
            "docs/platoon/bend_mpc_replay.md"
          ],
          "commitId" : "0c94d6c281820d47727c0227f613484f1f175853",
          "timestamp" : 1789448868000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): stabilize MPC and record replayable failure CSVs\u000a",
          "date" : "2026-09-15 13:07:48 +0800",
          "id" : "0c94d6c281820d47727c0227f613484f1f175853",
          "msg" : "fix(platoon): stabilize MPC and record replayable failure CSVs",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/leader_braking.csv"
            },
            {
              "editType" : "add",
              "file" : "tools/platoon_mpc_replay.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/bend_mpc_replay_results.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/bend_entry.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/insufficient_reserve.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/bend_speed_limit.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/bend_mpc_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_failure_csv.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/stationary_release.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/platoon_failure_case_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/uncontrollable_limit.csv"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/failure_csv.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/release_roundoff.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/release_boundary.csv"
            },
            {
              "editType" : "add",
              "file" : "algorithm/lattice/platoon_failure_csv.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/failure_case.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/platoon/mpc/failure_case.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/lattice_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "launch/pnc_leader.launch.py"
          ],
          "commitId" : "f47ea47a12219065662c119cd7e2da63c9d8cfac",
          "timestamp" : 1789451377000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: set leader vehilce speed limit as 70km/h\u000a",
          "date" : "2026-09-15 13:49:37 +0800",
          "id" : "f47ea47a12219065662c119cd7e2da63c9d8cfac",
          "msg" : "fix: set leader vehilce speed limit as 70km/h",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "launch/pnc_leader.launch.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/replayer_data_process/load_snap_data.cpp",
            "Testing/load_snap_data_compat_test.cpp"
          ],
          "commitId" : "638ea1300b20d655b3437e6444715cda33cba346",
          "timestamp" : 1789452631000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复远望 Compact 快照 ZIP 加载失败\u000a\u000aZIP 入口优先使用 Compact 解码器，保留旧版 Boost/zlib 快照兼容。兼容有无填充的 Base64，校验 JSON 和编码格式，失败时清空已加载帧并记录帧序号及原因。\u000a\u000a新增新旧格式 ZIP、序号间断、损坏数据及缺少锚点等回归用例。replayer 编译通过，9 项兼容性测试通过，T809 现场 ZIP 的 113 帧全部加载成功。\u000a",
          "date" : "2026-09-15 14:10:31 +0800",
          "id" : "638ea1300b20d655b3437e6444715cda33cba346",
          "msg" : "fix: 修复远望 Compact 快照 ZIP 加载失败",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/load_snap_data_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/load_snap_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/lane_change.md",
            "data/plan/switch_data.cpp",
            "Testing/platoon_lane_change_test_peer.hpp",
            "Testing/platoon_lane_change_test.cpp"
          ],
          "commitId" : "5aeffd335215cfaaa2bd6d6ad27334cf30e70c7e",
          "timestamp" : 1789456990000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): suppress autonomous lane changes while enabled\u000a",
          "date" : "2026-09-15 15:23:10 +0800",
          "id" : "5aeffd335215cfaaa2bd6d6ad27334cf30e70c7e",
          "msg" : "fix(platoon): suppress autonomous lane changes while enabled",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/lane_change.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test_peer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/platoon_mpc_replay.cpp",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "algorithm/lattice/platoon_trajectory1d_generator.hpp",
            "CMakeLists.txt",
            "docs/platoon/failure_csv.md",
            "data/config/cfg_platoon.cpp",
            "docs/platoon/time_headway_mpc.md",
            "Testing/platoon_test_safety.hpp",
            "data/config/cfg_platoon.hpp",
            "algorithm/platoon/mpc/platoon_response.hpp",
            "Testing/platoon_lattice_test.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "config/platoon.yaml",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/platoon_qp_solver_test.cpp",
            "algorithm/platoon/mpc/qp_solver.hpp",
            "algorithm/platoon/mpc/mpc_config.hpp",
            "Testing/platoon_safety_test.cpp",
            "docs/platoon/linear_mpc_replay.md",
            "Testing/platoon_mpc_core_test.cpp",
            "algorithm/platoon/mpc/platoon_response_safety.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.hpp",
            "algorithm/platoon/mpc/platoon_response_safety.hpp",
            "Testing/platoon_failure_case_test.cpp",
            "algorithm/platoon/mpc/failure_case.cpp",
            "docs/platoon/linear_mpc_latest_csv_verification.md",
            "algorithm/lattice/lattice.cpp",
            "algorithm/platoon/mpc/failure_case.hpp",
            "docs/platoon/safety_fallback.md",
            "algorithm/lattice/lattice.hpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "docs/platoon/bend_mpc_replay.md"
          ],
          "commitId" : "28c2e74cca8d10752f853b5211742747e5a77830",
          "timestamp" : 1789463056000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "refactor(platoon): use linear MPC with frozen braking gap targets\u000a",
          "date" : "2026-09-15 17:04:16 +0800",
          "id" : "28c2e74cca8d10752f853b5211742747e5a77830",
          "msg" : "refactor(platoon): use linear MPC with frozen braking gap targets",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/failure_case.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/mpc/platoon_response_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/failure_csv.md"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_test_safety.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/linear_mpc_latest_csv_verification.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/mpc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/linear_mpc_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/bend_mpc_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_case_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/platoon_response.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/platoon_mpc_replay.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/safety_fallback.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/failure_case.hpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/mpc/platoon_response_safety.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/search_decider/open_space_search_decider.cpp"
          ],
          "commitId" : "c2d41c5955603b7b0fe01cb0b35576df1b0ea0bc",
          "timestamp" : 1789465276000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/jiayifei",
            "fullName" : "jiayifei"
          },
          "authorEmail" : "jiayifei@senior.auto",
          "comment" : "fix：修复局部地图重建时导致的搜索失败次数误累计\u000a",
          "date" : "2026-09-15 17:41:16 +0800",
          "id" : "c2d41c5955603b7b0fe01cb0b35576df1b0ea0bc",
          "msg" : "fix：修复局部地图重建时导致的搜索失败次数误累计",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/linear_mpc_replay.md",
            "Testing/platoon_mpc_core_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "Testing/data/platoon_mpc/live_delayed_speed_entry.csv",
            "Testing/data/platoon_mpc/live_braking_release.csv",
            "Testing/data/platoon_mpc/live_response_jerk.csv",
            "docs/platoon/linear_mpc_latest_csv_verification.md",
            "Testing/data/platoon_mpc/live_stop_boundary.csv",
            "docs/platoon/time_headway_mpc.md",
            "Testing/data/platoon_mpc/live_near_stop_release.csv",
            "Testing/platoon_lattice_test.cpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp"
          ],
          "commitId" : "d7d6aba19ef018ee18e0aa0baa488e5529fa8570",
          "timestamp" : 1789465403000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): recover inherited response and reserve stopping room\u000a",
          "date" : "2026-09-15 17:43:23 +0800",
          "id" : "d7d6aba19ef018ee18e0aa0baa488e5529fa8570",
          "msg" : "fix(platoon): recover inherited response and reserve stopping room",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/live_near_stop_release.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/linear_mpc_replay.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/live_stop_boundary.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/live_delayed_speed_entry.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/live_braking_release.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/live_response_jerk.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/linear_mpc_latest_csv_verification.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/data/platoon_mpc/issued_speed_ceiling_5.csv",
            "Testing/data/platoon_mpc/issued_speed_ceiling_0.csv",
            "Testing/platoon_mpc_core_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "Testing/data/platoon_mpc/issued_speed_ceiling_3.csv",
            "Testing/data/platoon_mpc/issued_speed_ceiling_1.csv",
            "docs/platoon/time_headway_mpc.md",
            "Testing/data/platoon_mpc/issued_speed_ceiling_4.csv",
            "docs/platoon/issued_speed_ceiling_recovery.md",
            "Testing/platoon_response_test.cpp",
            "Testing/data/platoon_mpc/issued_speed_ceiling_2.csv",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp"
          ],
          "commitId" : "a123f64089f3e5b0d9a8fcda0f7a38d3cd4206e0",
          "timestamp" : 1789467246000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): recover speed overshoot during input delay\u000a",
          "date" : "2026-09-15 18:14:06 +0800",
          "id" : "a123f64089f3e5b0d9a8fcda0f7a38d3cd4206e0",
          "msg" : "fix(platoon): recover speed overshoot during input delay",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_2.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_5.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_1.csv"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_4.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_0.csv"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/issued_speed_ceiling_recovery.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/issued_speed_ceiling_3.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/draw/draw_path.cpp"
          ],
          "commitId" : "0196f15c47efea92947853dcc34dd65ee7858ef3",
          "timestamp" : 1789468282000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(hmi): display current and braking-adjusted platoon headway\u000a",
          "date" : "2026-09-15 18:31:22 +0800",
          "id" : "0196f15c47efea92947853dcc34dd65ee7858ef3",
          "msg" : "feat(hmi): display current and braking-adjusted platoon headway",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_path.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/CMakeLists.txt",
            "CMakeLists.txt"
          ],
          "commitId" : "11ca02a8b8ff42c8e53f9f3d3f9df0cdc325868d",
          "timestamp" : 1789470055000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一 Abseil 对象库编译依赖\u000a\u000a通过导入目标向 PNC、回放及 SSEP 对象库传递 Abseil 头文件和编译要求，避免安装更新后头文件与链接库版本不一致。\u000a\u000a验证：使用分布式编译成功构建 pnc_node 和 pnc_replayer。\u000a",
          "date" : "2026-09-15 19:00:55 +0800",
          "id" : "11ca02a8b8ff42c8e53f9f3d3f9df0cdc325868d",
          "msg" : "fix: 统一 Abseil 对象库编译依赖",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/search_guide_loader_test.cc",
            "tasks/plan/reversing_truck_path_task.cpp",
            "ssep/param_loader/search_guide_loader.cc",
            "ssep/data_structures/ssep_input.cc",
            "CMakeLists.txt",
            "tasks/plan/ssep_task.cpp",
            "ssep/param_loader/search_guide_loader.h",
            "data/vehicle/vehicle_destination.cpp",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/maps/ogm_builder.cc",
            "ssep/data_structures/search_via_point.h",
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "data/ssep/ssep_ec.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/protos/params.proto",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/cfg_scenarios_proto_codec.cpp",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "ssep/protos/scene.proto",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "ssep/keb_optimizer/keb_problem.h",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "hmi/draw/draw_map.cpp",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h",
            "replayer/scene_data/compact_proto_codec.cpp",
            "ssep/test/CMakeLists.txt",
            "data/other/flow_control.cpp",
            "ssep/offboard/ssep_planner_wrapper.cc",
            "data/plan/ssep_data.hpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "Testing/cfg_scenarios_proto_codec_test.cpp",
            "replayer/algorithm_replay/generated/scenario_task_chains.json",
            "docs/reverse_pickup_search.md",
            "scenarios/bulkload_scenario/bulkload_move_forward_stage.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "ssep/common/utils/scene_frame_visualization.cc",
            "data/app/reaction/app_reaction.cpp",
            "ssep/offboard/scene_replay/replay_scene_frame_cli.cc",
            "data/config/cfg_ssep.hpp",
            "ssep/offboard/generate_scene_data/transform_to_body_frame_cli.cc",
            "replayer/scene_data/config_proto_codec.hpp",
            "data/plan/path_direction_data.cpp",
            "ssep/maps/ogm_builder.h",
            "ssep/data_structures/ssep_input.hpp",
            "ssep/test/scene_replay_obstacle_inputs_test.cc",
            "data/ssep/forward_ec.hpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "data/plan/ssep_data.cpp",
            "data/app/fsm/task_fsm/task_park_fsm/park_fsm_transition/bulk_transition.cpp",
            "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.h",
            "replayer/scene_replay/scene_replay_service.cpp",
            "Testing/path_pair_validation_test.cpp",
            "tasks/deciders/search_decider/forward_search_decider.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/param_loader/param.h",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp",
            "Testing/routing_transition_test.cpp",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "config/config_truck/scenario.yaml",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "ssep/coarse_search/evaluator/bidirectional_kinematic_heuristic_computer.h",
            "data/other/reverse_pickup.cpp",
            "data/ssep/ssep_activation.cpp",
            "data/plan/path_data.cpp",
            "Testing/reverse_pickup_stage_selector_test.cpp",
            "proto/pnc_scene/compact_replay_input.proto",
            "data/config/cfg_ssep.cpp",
            "data/ssep/forward_ec.cpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "data/config/cfg_stage.cpp",
            "ssep/ssep_planner.h",
            "ssep/CMakeLists.txt",
            "ssep/data_structures/search_guide_match.h",
            "ssep/data_structures/search_guide.h",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc",
            "ssep/ssep_planner.cc",
            "plan/pilot/pilot_update.cpp",
            "proto/plan_data.proto",
            "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.cc",
            "tasks/plan/ssep_task.hpp",
            "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.hpp",
            "Testing/reverse_pickup_lifecycle_test.cpp",
            "Testing/search_decider_lifecycle_test.cpp",
            "data/app/fsm/task_fsm/task_fsm.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "data/other/reverse_pickup.hpp",
            "data/app/fsm/task_command_type.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.hpp",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "ssep/scenarios/ordered_search_via_validation.h",
            "data/app/fsm/task_command_type.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "proto/config.proto",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "ssep/scenarios/scenario_planner_factory.h",
            "data/config/cfg_stage.hpp",
            "ssep/test/ssep_planner_test.cc",
            "config/config_truck/ssep_search_guides.yaml",
            "tools/pnc_proto_mapper/generator.py",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "ssep/offboard/main_test/main_ssep_input.cc",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "fa8231b1b6c9d51a1d5a9fce5b2a12231bf19aef",
          "timestamp" : 1789470055000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持倒车接货顺序途经搜索与姿态约束\u000a\u000a复用 ForwardEC 和 Bulk Stage，在任务终点停车后启动分段搜索，维护顺序途经点进度并支持换向及手动重搜索；保留 PARK_LOCK 的有效路径和引导线。\u000a\u000a加入 YAML 搜索引导线、途经点可视化、车头及挂车姿态约束和 KEB 最终验收，优化首段预算与起始姿态适应能力。修复车挂路径配对失效、普通搜索结果发布及精确障碍物回放，补齐 Full/Compact 合同与配套测试。\u000a\u000a验证：分布式构建 pnc_node、pnc_replayer 通过；任务与搜索生命周期测试通过；SSEP 搜索测试及现场场景回归通过。\u000a",
          "date" : "2026-09-15 19:00:55 +0800",
          "id" : "fa8231b1b6c9d51a1d5a9fce5b2a12231bf19aef",
          "msg" : "feat: 支持倒车接货顺序途经搜索与姿态约束",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/scenarios/ordered_search_via_validation.h"
            },
            {
              "editType" : "add",
              "file" : "data/other/reverse_pickup.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_planner_wrapper.cc"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_map.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_command_type.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_input.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/generate_scene_data/transform_to_body_frame_cli.cc"
            },
            {
              "editType" : "add",
              "file" : "Testing/reverse_pickup_stage_selector_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_direction_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_destination.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/common/utils/scene_frame_visualization.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_fsm/task_fsm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_command_type.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/scenario.yaml"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "add",
              "file" : "Testing/path_pair_validation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/search_via_point.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/search_guide_match.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_ssep_input.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/algorithm_replay/generated/scenario_task_chains.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/param_loader/search_guide_loader.h"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/params.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_replay/scene_replay_service.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/replay_scene_frame_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/other/flow_control.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/bidirectional_kinematic_heuristic_computer.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "add",
              "file" : "Testing/reverse_pickup_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/pilot/pilot_update.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.h"
            },
            {
              "editType" : "add",
              "file" : "config/config_truck/ssep_search_guides.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_input.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/param_loader/param.h"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_ssep.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_move_forward_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/param_loader/search_guide_loader.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/cfg_scenarios_proto_codec_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/scene_replay_obstacle_inputs_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/search_guide.h"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_ssep.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/scene.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/other/reverse_pickup.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/search_guide_loader_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/reaction/app_reaction.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_fsm/task_park_fsm/park_fsm_transition/bulk_transition.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/parking_collision_quality.py",
            "ssep/test/local_regression/tt_ordered_pose_results.json",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/tt_parking_quality.py",
            "Taskfile.yml",
            "ssep/test/local_regression/tt_ordered_via_manifest.tsv",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "ssep/test/local_regression/tt_ordered_via_cases.json",
            "ssep/test/local_regression/tt_ordered_via_quality.json",
            "ssep/test/local_regression/test_parking_collision_quality.py",
            "ssep/test/local_regression/tt_ordered_pose_cases.json",
            "ssep/test/local_regression/test_tt_parking_regression.py",
            "ssep/test/local_regression/test_pose_regression.py",
            "ssep/test/local_regression/generate_pose_regression.py",
            "ssep/test/local_regression/tt_ordered_pose_manifest.tsv"
          ],
          "commitId" : "8efd7a6dfd64463a69c7007abf34f08b8432ef7b",
          "timestamp" : 1789470055000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 增加 SSEP 现场场景和起始姿态扰动回归\u000a\u000a归档近期顺序途经搜索案例清单、输入校验信息及质量结果，增加位置、车头角和挂车角扰动生成器，校验途经顺序与精确障碍物碰撞。回放构建支持显式 Release 配置并补充 task 入口。\u000a\u000a验证：6 个现场案例与 11 个姿态扰动案例通过，Python 回归测试 58 项通过。\u000a",
          "date" : "2026-09-15 19:00:55 +0800",
          "id" : "8efd7a6dfd64463a69c7007abf34f08b8432ef7b",
          "msg" : "test: 增加 SSEP 现场场景和起始姿态扰动回归",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_pose_cases.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_via_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_pose_results.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/generate_pose_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_pose_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_via_cases.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_pose_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_parking_quality.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/parking_collision_quality.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_parking_collision_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_via_quality.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_tt_parking_regression.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/draw/draw_path.cpp"
          ],
          "commitId" : "b13c2d4f89eb42836b3753b9c6d7c87261c7c603",
          "timestamp" : 1789475622000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(hmi): exclude standstill gap from current headway\u000a",
          "date" : "2026-09-15 20:33:42 +0800",
          "id" : "b13c2d4f89eb42836b3753b9c6d7c87261c7c603",
          "msg" : "fix(hmi): exclude standstill gap from current headway",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_path.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/data/platoon_mpc/limit_active_precision_b.csv",
            "Testing/platoon_mpc_core_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "Testing/data/platoon_mpc/limit_inherited_acceleration.csv",
            "Testing/data/platoon_mpc/limit_bend_braking.csv",
            "docs/platoon/speed_boundary_recovery.md",
            "Testing/data/platoon_mpc/limit_committed_entry.csv",
            "Testing/data/platoon_mpc/limit_active_precision_c.csv",
            "docs/platoon/time_headway_mpc.md",
            "Testing/data/platoon_mpc/limit_active_precision_a.csv",
            "docs/platoon/issued_speed_ceiling_recovery.md",
            "Testing/platoon_lattice_test.cpp",
            "Testing/data/platoon_mpc/limit_post_delay_entry.csv",
            "Testing/platoon_response_test.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "Testing/data/platoon_mpc/limit_aligned_origin.csv",
            "Testing/data/platoon_mpc/limit_stop_release.csv",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/platoon_qp_solver_test.cpp"
          ],
          "commitId" : "84b7b5309baa1aeca0c9b656b9a758af6ce9c2af",
          "timestamp" : 1789477834000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): recover speed-boundary constraints without losing continuity\u000a",
          "date" : "2026-09-15 21:10:34 +0800",
          "id" : "84b7b5309baa1aeca0c9b656b9a758af6ce9c2af",
          "msg" : "fix(platoon): recover speed-boundary constraints without losing continuity",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_aligned_origin.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_active_precision_a.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_committed_entry.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_bend_braking.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_active_precision_b.csv"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/speed_boundary_recovery.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_inherited_acceleration.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_stop_release.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/issued_speed_ceiling_recovery.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_post_delay_entry.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/data/platoon_mpc/limit_active_precision_c.csv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/out_yard_junction_ec.hpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.hpp",
            "data/ssep/seaside_junction_ec.hpp",
            "data/ssep/ex_lane_change_ec.cpp",
            "data/ssep/out_yard_junction_ec.cpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/deciders/search_decider/forward_search_decider.hpp",
            "data/ssep/seaside_junction_ec.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.hpp",
            "data/ssep/open_space_ec.cpp",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.hpp",
            "data/ssep/open_space_ec.hpp",
            "tasks/deciders/search_decider/reverse_search_decider.cpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.hpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.hpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.cpp",
            "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "data/ssep/reverse_ec.cpp",
            "data/ssep/forward_ec.cpp",
            "data/ssep/bridge_junction_ec.cpp",
            "data/ssep/normal_junction_ec.cpp",
            "Testing/reference_line_replan_test.cpp",
            "tasks/deciders/search_decider/reverse_search_decider.hpp",
            "data/ssep/normal_junction_ec.hpp",
            "data/ssep/bridge_junction_ec.hpp",
            "tasks/deciders/search_decider/out_yard_junction_search_decider.hpp",
            "docs/ssep_search_lifecycle.md",
            "data/ssep/into_yard_junction_ec.hpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.hpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "data/ssep/into_yard_junction_ec.cpp",
            "data/ssep/ex_lane_change_ec.hpp",
            "data/ssep/forward_ec.hpp",
            "data/ssep/reverse_ec.hpp"
          ],
          "commitId" : "ad252560237ce635cae82a55310beda37d002dd7",
          "timestamp" : 1789478123000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 区分搜索输入等待与环境构造失败\u000a\u000a九类搜索在输入不可用时等待，构造失败清理半成品并继续重试，保留等停请求及搜索回退进度；仅实际搜索失败耗尽回退后进入 UNUSE。\u000a补齐 Forward 在 IDLE 收到人工重搜时的策略准备，避免沿用旧拉直状态，并限制同一请求只重置一次。\u000a更新生命周期文档、生成指纹及输入恢复、计数饱和和终态回归测试。\u000a",
          "date" : "2026-09-15 21:15:23 +0800",
          "id" : "ad252560237ce635cae82a55310beda37d002dd7",
          "msg" : "fix: 区分搜索输入等待与环境构造失败",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/ex_lane_change_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/seaside_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/bridge_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/seaside_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ex_lane_change_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/bridge_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/reverse_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/reverse_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/reverse_pickup_stage_selector_test.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.cpp",
            "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.cpp",
            "tasks/plan/ssep_task.hpp",
            "tasks/plan/ssep_task.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "docs/ssep_search_lifecycle.md",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "Testing/routing_transition_test.cpp",
            "tasks/deciders/search_decider/reverse_search_decider.cpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
          ],
          "commitId" : "205596008a5ca6391020ebfe64226b05827da5a5",
          "timestamp" : 1789478161000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复任务切换后搜索状态卡在 FINISH\u000a\u000a九类搜索使用与异步结果一致的有效任务 ID，在任务交接时失效旧构造器及发布快照，防止输入异常后恢复旧状态。\u000a异步 future 提交当帧立即发布运行标志，避免下一帧新请求误过线程门禁后被丢弃。\u000a补充跨任务结果回收、连续切换、异常输入恢复和提交帧运行状态回归，保留同任务重搜及倒车取货结果复用。\u000a",
          "date" : "2026-09-15 21:16:01 +0800",
          "id" : "205596008a5ca6391020ebfe64226b05827da5a5",
          "msg" : "fix: 修复任务切换后搜索状态卡在 FINISH",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reverse_pickup_stage_selector_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "scenarios/task_condition_evaluator.cpp"
          ],
          "commitId" : "03968a21f9e470b48d375582b47f7e7d0234fdab",
          "timestamp" : 1789478187000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 选择堆场 KEB 前检查引导线覆盖路口终点\u000a\u000aVV087 对位快照同地图重建中，引导线长 83.5 米，直行出场路口终点为 83.6313 米；原选择器选中 KEB 后因终点越界持续输入失败。\u000a非明确进出场区域的几何接管共用完整终点构造检查，目标不可用时走后续配置规划器，保留明确进出场区域的输入异常保护。\u000a增加终点等长及两侧边界测试，并验证 KEB、PJPO 和恢复 KEB 的选择过程。\u000a",
          "date" : "2026-09-15 21:16:27 +0800",
          "id" : "03968a21f9e470b48d375582b47f7e7d0234fdab",
          "msg" : "fix: 选择堆场 KEB 前检查引导线覆盖路口终点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "hmi/draw/draw_path.cpp"
          ],
          "commitId" : "3cbfb23cc7b803b6f1f58cee679b5622da03f5e5",
          "timestamp" : 1789478721000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(hmi): use aligned MPC state for current headway\u000a",
          "date" : "2026-09-15 21:25:21 +0800",
          "id" : "3cbfb23cc7b803b6f1f58cee679b5622da03f5e5",
          "msg" : "fix(hmi): use aligned MPC state for current headway",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_path.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "scripts/install_vehicle_abseil.sh",
            "CMakeLists.txt",
            "scripts/install_vehicle_abseil.md"
          ],
          "commitId" : "0a23a436b1a2c784156b86f7242f470f71a00cd3",
          "timestamp" : 1789482728000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 添加 Abseil 安装脚本及文档以对齐车端基准\u000a",
          "date" : "2026-09-15 22:32:08 +0800",
          "id" : "0a23a436b1a2c784156b86f7242f470f71a00cd3",
          "msg" : "feat: 添加 Abseil 安装脚本及文档以对齐车端基准",
          "paths" : [
            {
              "editType" : "add",
              "file" : "scripts/install_vehicle_abseil.sh"
            },
            {
              "editType" : "add",
              "file" : "scripts/install_vehicle_abseil.md"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "scripts/install_vehicle_abseil.md"
          ],
          "commitId" : "e53a2f2a35a3cbc597043bd6deada98e313940e4",
          "timestamp" : 1789483893000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 补充 Abseil 验证结果与回滚步骤\u000a\u000a记录 GCC 9.4 使用车端基准 Abseil 全量构建 pnc_node 成功，并补充手工恢复动态库后刷新 ldconfig 缓存的步骤。\u000a",
          "date" : "2026-09-15 22:51:33 +0800",
          "id" : "e53a2f2a35a3cbc597043bd6deada98e313940e4",
          "msg" : "docs: 补充 Abseil 验证结果与回滚步骤",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "scripts/install_vehicle_abseil.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
          ],
          "commitId" : "c361c63f6d79341524ac0ec29e22c86cba545039",
          "timestamp" : 1789525981000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "docs(platoon): document manager VehicleInfo interface in Chinese\u000a",
          "date" : "2026-09-16 10:33:01 +0800",
          "id" : "c361c63f6d79341524ac0ec29e22c86cba545039",
          "msg" : "docs(platoon): document manager VehicleInfo interface in Chinese",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
          ],
          "commitId" : "8b650864538e80ace19cee1cd7b1023e53ddf34e",
          "timestamp" : 1789526519000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "docs(platoon): link interface guide to its Confluence child page\u000a",
          "date" : "2026-09-16 10:41:59 +0800",
          "id" : "8b650864538e80ace19cee1cd7b1023e53ddf34e",
          "msg" : "docs(platoon): link interface guide to its Confluence child page",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/linear_mpc_design_report_zh.md"
          ],
          "commitId" : "a36934e85bffe55be33b1efeaeb407f300affa31",
          "timestamp" : 1789528379000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "docs(platoon): publish linear MPC design report in Chinese\u000a",
          "date" : "2026-09-16 11:12:59 +0800",
          "id" : "a36934e85bffe55be33b1efeaeb407f300affa31",
          "msg" : "docs(platoon): publish linear MPC design report in Chinese",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/platoon/linear_mpc_design_report_zh.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/map_envelops_async_test.cpp",
            "Testing/async_union_region_state_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "Taskfile.yml",
            "data/map/envelop/async_union_region_state.hpp",
            "data/map/envelop/map_envelops.cpp",
            "CMakeLists.txt"
          ],
          "commitId" : "ca5ce322943abbb463f2a8a144923ca7aadc62eb",
          "timestamp" : 1789532172000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复地图轮廓异步任务循环引用导致的内存泄漏\u000a\u000a异步任务仅持有计算输入并返回结果，使用 packaged_task 和分离线程解除状态与 future 的循环引用。重置及丢帧不等待任务，计算结束后自动释放资源，保留正常跨帧结果传递和主备轮廓行为。\u000a\u000a补充任务生命周期及真实轮廓集成回归，更新测试构建入口和头文件校验摘要。本轮实现已通过 17 项回归及 12800 次任务丢弃压力测试；提交前恢复到当前分支并复核生成校验。\u000a",
          "date" : "2026-09-16 12:16:12 +0800",
          "id" : "ca5ce322943abbb463f2a8a144923ca7aadc62eb",
          "msg" : "fix: 修复地图轮廓异步任务循环引用导致的内存泄漏",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/map_envelops_async_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/envelop/map_envelops.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/async_union_region_state_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/map/envelop/async_union_region_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Taskfile.yml"
          ],
          "commitId" : "428687dfb7b596f3f36a84df1de6d7068279a55d",
          "timestamp" : 1789532191000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "build: 添加快照内存修复的分布式编译任务\u000a\u000a允许显式指定与当前编译器匹配的 icecc 工具链及并行槽位，统一构建生命周期测试、回放集成测试和 PlanFrame 兼容 SDK。\u000a",
          "date" : "2026-09-16 12:16:31 +0800",
          "id" : "428687dfb7b596f3f36a84df1de6d7068279a55d",
          "msg" : "build: 添加快照内存修复的分布式编译任务",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/car_wbca_manager.cpp",
            "algorithm/wbca/wbca_manager.hpp",
            "tasks/plan/path_optimization_task.cpp",
            "CMakeLists.txt",
            "algorithm/wbca/truck_wbca_manager.cpp",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "97e9bff2e15a18a6e3def9a2bd2531f12aba5608",
          "timestamp" : 1789542300000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(platoon): project leader history inside car and truck WBCA\u000a",
          "date" : "2026-09-16 15:05:00 +0800",
          "id" : "97e9bff2e15a18a6e3def9a2bd2531f12aba5608",
          "msg" : "feat(platoon): project leader history inside car and truck WBCA",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/car_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_region.cpp"
          ],
          "commitId" : "543d6b7225856f87fd96ba74103edca04777d4ce",
          "timestamp" : 1789545614000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 扩大津西区域识别范围以覆盖当前地图\u000a\u000a保留原区域中心，将半径由 3000 m 调整为 5100 m，覆盖当前地图最远角点并预留边界余量，避免地图内任务无法识别为津西场景。\u000a",
          "date" : "2026-09-16 16:00:14 +0800",
          "id" : "543d6b7225856f87fd96ba74103edca04777d4ce",
          "msg" : "fix: 扩大津西区域识别范围以覆盖当前地图",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_region.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/other/reverse_pickup.cpp",
            "docs/reverse_pickup_search.md",
            "Testing/reverse_pickup_lifecycle_test.cpp"
          ],
          "commitId" : "d373a30e14dc6b33299c4d02b740ecfaa06afd48",
          "timestamp" : 1789545697000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 支持无一次规划的倒车接货任务进入散货场景\u000a\u000a无路由任务使用车头后轴到 a 点的实际距离与停稳状态判断入场，不再依赖无效的路由终点距离。有路由任务保留原有门控。补充任务 46809 坐标及边界、无效状态回归；64 项任务回归通过。\u000a",
          "date" : "2026-09-16 16:01:37 +0800",
          "id" : "d373a30e14dc6b33299c4d02b740ecfaa06afd48",
          "msg" : "fix: 支持无一次规划的倒车接货任务进入散货场景",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/other/reverse_pickup.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reverse_pickup_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "ssep/test/ssep_planner_test.cc",
            "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.h",
            "docs/reverse_pickup_search.md",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
          ],
          "commitId" : "2073156e538df55510cff697edb0ddb7920bef45",
          "timestamp" : 1789545814000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "perf: 减少双向搜索启发计算和 RS 候选分配\u000a\u000a提前过滤已被支配的节点，减少重复启发计算；使用固定数组保存最短 RS 候选，保持候选顺序和搜索代价语义。补充支配节点过滤回归测试。\u000a",
          "date" : "2026-09-16 16:03:34 +0800",
          "id" : "2073156e538df55510cff697edb0ddb7920bef45",
          "msg" : "perf: 减少双向搜索启发计算和 RS 候选分配",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/reeds_shepp_path.h"
            },
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/tt_ordered_via_manifest.tsv",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/local_regression/tt_ordered_via_cases.json",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/data_structures/search_guide_match.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "docs/reverse_pickup_search.md",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
          ],
          "commitId" : "11bc0c0a24736bcc26c206a3e74fdfdd76fb81bf",
          "timestamp" : 1789545843000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 改善有序倒车搜索的引导匹配和起始控制约束\u000a\u000a允许沿引导线执行端点有限延长匹配，保留横向门限并优先匹配附近记录路径。仅释放输入缺失且初值超限的首曲率，保持实测姿态和已知控制量。调整优化预算并补充引导匹配、控制边界及现场回归用例。\u000a",
          "date" : "2026-09-16 16:04:03 +0800",
          "id" : "11bc0c0a24736bcc26c206a3e74fdfdd76fb81bf",
          "msg" : "fix: 改善有序倒车搜索的引导匹配和起始控制约束",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_ordered_via_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_ordered_via_cases.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/search_guide_match.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/data_structures/path.cc",
            "data/plan/ssep_data.cpp",
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/test/local_regression/README.md",
            "data/plan/ssep_data.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/test/local_regression/tt_multi_short_tail_manifest.tsv",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc",
            "ssep/test/ssep_planner_test.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h",
            "tasks/deciders/other_decider/replan_decider.cpp",
            "ssep/test/local_regression/tt_multi_ratio_manifest.tsv",
            "ssep/data_structures/search_guide_match.h",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/ssep_planner.cc",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "data/ssep/ssep_ec.cpp",
            "ssep/test/local_regression/tt_multi_collision_manifest.tsv",
            "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
          ],
          "commitId" : "72a81e9cd47956e18d6e1757524379f47dbbc745",
          "timestamp" : 1789545858000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持多段停车历史重规划并完善路径验收\u000a\u000a换向和普通人工重规划保留同任务未执行的历史路径，先尝试历史初值，失败后使用软引导搜索并回退无引导搜索；强制拉直仍不使用历史路径。统一停车优化的倒车曲率比例，修复短末端采样，并增加整车及扫掠碰撞验收。裁剪后验收失败时尝试通过验收的原始路径，补充生命周期、引导和现场回归用例。\u000a",
          "date" : "2026-09-16 16:04:18 +0800",
          "id" : "72a81e9cd47956e18d6e1757524379f47dbbc745",
          "msg" : "feat: 支持多段停车历史重规划并完善路径验收",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/search_guide_match.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_multi_short_tail_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/path.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_multi_collision_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_multi_ratio_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/out_yard_junction_ec.cpp"
          ],
          "commitId" : "b6df521ba88bd09ef1af16e5addec34c81a40d88",
          "timestamp" : 1789549249000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复静止出堆场搜索起点落在车后\u000a\u000a当停止线回退起点不在当前车位前方时，复用实车位姿和轮角构造搜索起点，并记录起点切换日志。避免车辆越过预设起点后重新下发任务仍从车后搜索。\u000a\u000a验证：pnc_node 编译及构建附带检查通过，git diff --check 通过。\u000a",
          "date" : "2026-09-16 17:00:49 +0800",
          "id" : "b6df521ba88bd09ef1af16e5addec34c81a40d88",
          "msg" : "fix: 修复静止出堆场搜索起点落在车后",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/wbca_manager.hpp",
            "source/ros_source_platoon_vehicle_info.cpp",
            "tasks/plan/path_optimization_task.cpp",
            "docs/platoon/wbca_platoon_mode.md",
            "data/platoon/platoon_info.hpp",
            "data/platoon/platoon_info.cpp",
            "plan/prepare/prepare_platoon.cpp",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "b746a56e3ced35563c7bb27d6c9f6f84f63d8012",
          "timestamp" : 1789552118000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Add WBCA platoon mode with leader geometry and issued trajectory timing\u000a",
          "date" : "2026-09-16 17:48:38 +0800",
          "id" : "b746a56e3ced35563c7bb27d6c9f6f84f63d8012",
          "msg" : "Add WBCA platoon mode with leader geometry and issued trajectory timing",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_platoon_vehicle_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "docs/platoon/wbca_platoon_mode.md",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "e11598c8e5646cd77ee90036f203ba659b02285f",
          "timestamp" : 1789553310000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Extend WBCA platoon history route along reference line\u000a",
          "date" : "2026-09-16 18:08:30 +0800",
          "id" : "e11598c8e5646cd77ee90036f203ba659b02285f",
          "msg" : "Extend WBCA platoon history route along reference line",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/continuous_junction_replan_test.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp",
            "tasks/deciders/other_decider/replan_decider.hpp",
            "docs/ssep_search_lifecycle.md"
          ],
          "commitId" : "ae161134773778488865f4ecc68570717a426bee",
          "timestamp" : 1789559354000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按目标路口触发连续入场重搜\u000a\u000a在入场弯前复用搜索环境的停止线筛选规则，比较目标路口与历史 REUSE 搜索路口，避免经过多车道或冷却后漏搜。\u000a同路口、已有请求、旧搜索未完成或输入不完整时不新建请求，保留原路径及即时重搜语义。\u000a补充左右 S 弯、目标筛选、冷却恢复、重复抑制和缺失输入回归。\u000a\u000a验证：pnc_node 编译成功；完整回归 344 项通过、45 项跳过，无失败（包含出场接管修复）。\u000a",
          "date" : "2026-09-16 19:49:14 +0800",
          "id" : "ae161134773778488865f4ecc68570717a426bee",
          "msg" : "fix: 按目标路口触发连续入场重搜",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/continuous_junction_replan_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/scenario/scenario_manager.cpp",
            "Testing/scenario_search_exit_test.cpp",
            "docs/ssep_search_lifecycle.md"
          ],
          "commitId" : "0c15dfca196f310fe06d3f4c1b87c511378a6ff4",
          "timestamp" : 1789559365000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补齐出堆场 S 弯和 U 弯区域识别\u000a\u000a将出场 S 弯、U 弯的左右方向及弯前和弯中纳入区域判断，使入场等搜索场景按准入条件正常让出。\u000a补充出场区域保持、切换到下一入场区域、禁搜及旧路径收尾回归，并记录接管规则。\u000a\u000a验证：pnc_node 编译成功；完整回归 344 项通过、45 项跳过，无失败。\u000a",
          "date" : "2026-09-16 19:49:25 +0800",
          "id" : "0c15dfca196f310fe06d3f4c1b87c511378a6ff4",
          "msg" : "fix: 补齐出堆场 S 弯和 U 弯区域识别",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scenario_search_exit_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_manager.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/wbca_manager.hpp",
            "tasks/plan/path_optimization_task.cpp",
            "algorithm/wbca/path_optimization/path_optimization.hpp",
            "docs/platoon/wbca_platoon_mode.md",
            "data/wbca/grid_map/esdf_map.hpp",
            "data/wbca/wbca_data.hpp",
            "CMakeLists.txt",
            "algorithm/wbca/wbca_failure_csv.cpp",
            "data/wbca/grid_map/grid_map.hpp",
            "tools/wbca_failure_replay.cpp",
            "algorithm/wbca/path_optimization/path_optimization.cpp",
            "algorithm/wbca/wbca_failure_csv.hpp",
            "docs/platoon/wbca_failure_replay.md",
            "Testing/wbca_failure_csv_test.cpp"
          ],
          "commitId" : "0691292c6f79f9e0eb84deb29008291648f1c06f",
          "timestamp" : 1789563531000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Capture replayable WBCA failures with time and position save limits\u000a",
          "date" : "2026-09-16 20:58:51 +0800",
          "id" : "0691292c6f79f9e0eb84deb29008291648f1c06f",
          "msg" : "Capture replayable WBCA failures with time and position save limits",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/grid_map/grid_map.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "add",
              "file" : "algorithm/wbca/wbca_failure_csv.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_failure_replay.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/grid_map/esdf_map.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/wbca_failure_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/wbca_failure_csv_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/wbca/wbca_failure_csv.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/wbca_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/wbca_platoon_mode.md",
            "algorithm/wbca/wbca_manager.cpp",
            "Testing/fixtures/wbca_platoon_low_speed_failure.csv",
            "Testing/wbca_failure_csv_test.cpp",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "2447e42b612d0ac60b67e1c2fee6158d0555706d",
          "timestamp" : 1789564099000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Allow WBCA platoon speeds below the reference road speed\u000a",
          "date" : "2026-09-16 21:08:19 +0800",
          "id" : "2447e42b612d0ac60b67e1c2fee6158d0555706d",
          "msg" : "Allow WBCA platoon speeds below the reference road speed",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/fixtures/wbca_platoon_low_speed_failure.csv"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "docs/platoon/wbca_platoon_mode.md",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "403392c5fe40c01b11c1e76b61596db8b3ed0f5a",
          "timestamp" : 1789612175000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Restore WBCA platoon route endpoint to leader history\u000a",
          "date" : "2026-09-17 10:29:35 +0800",
          "id" : "403392c5fe40c01b11c1e76b61596db8b3ed0f5a",
          "msg" : "Restore WBCA platoon route endpoint to leader history",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/wbca_platoon_mode.md",
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/wbca_manager.hpp",
            "Testing/wbca_leader_history_test.cpp",
            "tasks/plan/path_optimization_task.cpp"
          ],
          "commitId" : "fd50a03cbeaec2b7c02db4cff1dab1e9b004bbea",
          "timestamp" : 1789613971000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Initialize platoon WBCA from current speeds and cap route spacing\u000a",
          "date" : "2026-09-17 10:59:31 +0800",
          "id" : "fd50a03cbeaec2b7c02db4cff1dab1e9b004bbea",
          "msg" : "Initialize platoon WBCA from current speeds and cap route spacing",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/wbca_platoon_mode.md",
            "algorithm/wbca/wbca_manager.cpp",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "0c258afe2c9d613c98b69c16bae395d22b77812f",
          "timestamp" : 1789614714000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Use planning start velocity for platoon WBCA timing\u000a",
          "date" : "2026-09-17 11:11:54 +0800",
          "id" : "0c258afe2c9d613c98b69c16bae395d22b77812f",
          "msg" : "Use planning start velocity for platoon WBCA timing",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "docs/platoon/wbca_platoon_mode.md",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "51b43b6b58c029f448ad8b9106de3bb64a8e1367",
          "timestamp" : 1789615586000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Restore configured platoon WBCA route spacing\u000a",
          "date" : "2026-09-17 11:26:26 +0800",
          "id" : "51b43b6b58c029f448ad8b9106de3bb64a8e1367",
          "msg" : "Restore configured platoon WBCA route spacing",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/path_optimization/truck_path_optimization.hpp",
            "algorithm/wbca/wbca_manager.hpp",
            "docs/platoon/wbca_platoon_mode.md",
            "Testing/wbca_leader_history_test.cpp",
            "algorithm/wbca/path_optimization/truck_path_optimization.cpp",
            "algorithm/wbca/path_optimization/car_path_optimization.cpp"
          ],
          "commitId" : "d17455e2c4c5f57b73335f87c580571a867c8784",
          "timestamp" : 1789618293000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Optimize platoon prefix and normal tail in parallel\u000a",
          "date" : "2026-09-17 12:11:33 +0800",
          "id" : "d17455e2c4c5f57b73335f87c580571a867c8784",
          "msg" : "Optimize platoon prefix and normal tail in parallel",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/car_path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "data/config/cfg_lat_plan.hpp",
            "algorithm/wbca/wbca_manager.hpp",
            "data/config/cfg_lat_plan.cpp",
            "tasks/plan/path_optimization_task.cpp",
            "docs/platoon/wbca_platoon_mode.md",
            "docs/platoon/wbca_segment_pipeline_validation.md",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "767696ece0de64a0c47e2a5829e974892aa3ea37",
          "timestamp" : 1789630431000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Refactor WBCA into configurable ordered segment pipeline\u000a",
          "date" : "2026-09-17 15:33:51 +0800",
          "id" : "767696ece0de64a0c47e2a5829e974892aa3ea37",
          "msg" : "Refactor WBCA into configurable ordered segment pipeline",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/wbca_segment_pipeline_validation.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_platoon_mode.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "docs/platoon/wbca_segment_pipeline_validation.md",
            "Testing/fixtures/wbca_segment_short_seam_failure.csv",
            "Testing/wbca_leader_history_test.cpp",
            "Testing/fixtures/wbca_segment_tail_timing_failure.csv"
          ],
          "commitId" : "5642f6f33fe234070a4e0a6b8e62965737b6adf5",
          "timestamp" : 1789633010000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Fix WBCA tail timing and shared articulation initialization\u000a",
          "date" : "2026-09-17 16:16:50 +0800",
          "id" : "5642f6f33fe234070a4e0a6b8e62965737b6adf5",
          "msg" : "Fix WBCA tail timing and shared articulation initialization",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/fixtures/wbca_segment_tail_timing_failure.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/fixtures/wbca_segment_short_seam_failure.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_segment_pipeline_validation.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/wbca/CLAUDE.md",
            "algorithm/wbca/imv_wbca_manager.hpp",
            "algorithm/wbca/imv_wbca_manager.cpp",
            "algorithm/wbca/wbca_manager.hpp"
          ],
          "commitId" : "ec6a7315335724e2b225da2483beec9eec830075",
          "timestamp" : 1789635876000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Remove unused WBCA local optimization mode\u000a",
          "date" : "2026-09-17 17:04:36 +0800",
          "id" : "ec6a7315335724e2b225da2483beec9eec830075",
          "msg" : "Remove unused WBCA local optimization mode",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/imv_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/imv_wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/CLAUDE.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "Testing/wbca_smooth_continuity_test.cpp",
            "docs/wbca_history_geometry.md",
            "algorithm/wbca/wbca_manager.hpp"
          ],
          "commitId" : "b3e4653f9d9c898b6ccf178e4fdea6386fa97c01",
          "timestamp" : 1789698276000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(wbca): replace divergent history beyond direct-link prefix\u000a",
          "date" : "2026-09-18 10:24:36 +0800",
          "id" : "b3e4653f9d9c898b6ccf178e4fdea6386fa97c01",
          "msg" : "fix(wbca): replace divergent history beyond direct-link prefix",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/wbca_history_geometry.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_smooth_continuity_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "docs/platoon/wbca_segment_pipeline_validation.md",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "21c77160573d9a69b08b921ad9fc2a7f78c016e1",
          "timestamp" : 1789710641000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Resample WBCA second segment from leader boundary to endpoint\u000a",
          "date" : "2026-09-18 13:50:41 +0800",
          "id" : "21c77160573d9a69b08b921ad9fc2a7f78c016e1",
          "msg" : "Resample WBCA second segment from leader boundary to endpoint",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_segment_pipeline_validation.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/CMakeLists.txt",
            "CMakeLists.txt",
            "tools/pnc_proto_mapper/test_build_boundaries.py"
          ],
          "commitId" : "202aa8a21799c5bff20a40ef9dbb0f77d0a8a2ed",
          "timestamp" : 1789723104000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 将测试构建配置集中到 Testing 目录\u000a\u000a将测试目标和 GTest 依赖迁入 Testing/CMakeLists.txt，顶层保留测试开关和子目录入口。\u000a保持测试名称、输出路径及 CTest 工作目录，同步适配构建边界检查。\u000a\u000a验证：构建边界检查通过，原有测试定义归一化比对一致，回放基础测试通过。\u000a",
          "date" : "2026-09-18 17:18:24 +0800",
          "id" : "202aa8a21799c5bff20a40ef9dbb0f77d0a8a2ed",
          "msg" : "refactor: 将测试构建配置集中到 Testing 目录",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_build_boundaries.py"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "data/plan/guide_line.cpp",
            "docs/bend_speed_up_junction_config.md",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "data/config/cfg_func_sw.hpp",
            "data/config/cfg_func_sw.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "Testing/guide_line_speed_limit_test.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "data/plan/guide_line.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "4900b070373d7be5654cead2ca94773e2ee4a446",
          "timestamp" : 1789723123000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持按路口 ID 禁用弯道前后提速\u000a\u000a新增 disable_bend_speed_up_junction_ids 配置，命中路口沿用地图限速，空名单保持现有行为。\u000a补齐 Full、Compact 和 Candidate 配置读写及兼容合同生成物，并添加配置说明。\u000a新增限速专项测试，覆盖精确匹配、全局开关、短弯和反复更新恢复；补充回放与旧消息测试。\u000a\u000a验证：通过 -j68 分布式构建；6 个限速用例通过；回放测试 259 个通过、2 个可选数据用例跳过；生成物及 Proto 兼容性检查通过。\u000a",
          "date" : "2026-09-18 17:18:43 +0800",
          "id" : "4900b070373d7be5654cead2ca94773e2ee4a446",
          "msg" : "feat: 支持按路口 ID 禁用弯道前后提速",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/guide_line_speed_limit_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/bend_speed_up_junction_config.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/map/reference/center_line.cpp"
          ],
          "commitId" : "0e2488992f0efd846cc82d2ff9c40763e2d33bf1",
          "timestamp" : 1789741701000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix：解决西联Z型途经点导致的提前变道问题\u000a",
          "date" : "2026-09-18 22:28:21 +0800",
          "id" : "0e2488992f0efd846cc82d2ff9c40763e2d33bf1",
          "msg" : "fix：解决西联Z型途经点导致的提前变道问题",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/map/reference/center_line.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/compact_geometry_codec.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "Testing/compact_path_projection_test.cpp",
            "hmi/draw/draw_collision_detection.cpp",
            "Testing/CMakeLists.txt",
            "Testing/hmi_collision_render_test.cpp",
            "data/map/pnc_map/pnc_map.cpp"
          ],
          "commitId" : "c631484f4581fff526a32cfe7de6177d5444b200",
          "timestamp" : 1789742808000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复 bulk 快照引导线重建和碰撞框绘制\u000a\u000a限制弯道横向支路长度，并兼容旧快照记录的超长支路。中心线重建失败时沿用在线无效状态处理，继续构建引导线。\u000a\u000a恢复世界坐标路径的投影缓存，补充碰撞轮廓索引检查，避免快照绘制异常中断刷新。增加路径投影、包络显示及现场快照回归测试。\u000a",
          "date" : "2026-09-18 22:46:48 +0800",
          "id" : "c631484f4581fff526a32cfe7de6177d5444b200",
          "msg" : "fix: 修复 bulk 快照引导线重建和碰撞框绘制",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_geometry_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/hmi_collision_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_path_projection_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_collision_detection.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt",
            ".vscode/launch.json"
          ],
          "commitId" : "399b4e4ce4af1d1e9894fb29cf9d0c77081cdefb",
          "timestamp" : 1789742819000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "build: 为优化构建保留调试符号并配置 LLDB 查找路径\u000a\u000a在 Release 和 RelWithDebInfo 构建中启用调试信息，Clang 使用分离调试符号。为 VS Code 调试入口配置 build 目录搜索路径。\u000a",
          "date" : "2026-09-18 22:46:59 +0800",
          "id" : "399b4e4ce4af1d1e9894fb29cf9d0c77081cdefb",
          "msg" : "build: 为优化构建保留调试符号并配置 LLDB 查找路径",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : ".vscode/launch.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt"
          ],
          "commitId" : "d9bd27bd5353cad1c8e06248135cd4845f656dcf",
          "timestamp" : 1789746072000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix(build): 恢复 Release 现场发布的编译配置\u000a\u000aRelease 保持默认构建类型，不再自动附加调试符号及分离调试信息。调试参数仅对 Debug 和 RelWithDebInfo 生效。\u000a",
          "date" : "2026-09-18 23:41:12 +0800",
          "id" : "d9bd27bd5353cad1c8e06248135cd4845f656dcf",
          "msg" : "fix(build): 恢复 Release 现场发布的编译配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/time_headway_mpc.md",
            "algorithm/platoon/mpc/platoon_qp_polish.hpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "Testing/platoon_response_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "CMakeLists.txt",
            "Testing/platoon_qp_solver_test.cpp",
            "algorithm/platoon/mpc/qp_solver.hpp"
          ],
          "commitId" : "cc8562509eab44abf5636024201d226e900befbf",
          "timestamp" : 1789871292000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Use qpOASES for platoon MPC quadratic programs\u000a\u000aReplace the custom active-set and OSQP solver paths with qpOASES QProblem,\u000ausing the control module's MPC preset and termination tolerance. Accept\u000asuccessful library solutions directly, remove external KKT and MPC\u000apost-solve validation, and retain separate lattice safety checks.\u000a\u000aRemove obsolete solver options, diagnostics and custom-polishing tests;\u000aupdate the solver tests, linkage and MPC documentation.\u000a\u000aValidation: PNC, replay and test targets build successfully. Core tests\u000apass 40/40; lattice tests pass 106/132. The 118-capture trial solves 41\u000acases, with 76 timeouts and one solver-reported infeasible case.\u000a\u000aThis is the qpOASES trial, not a fix for the remaining timeout or duplicate\u000aconstraint cycling issues. No running planners were restarted.\u000a",
          "date" : "2026-09-20 10:28:12 +0800",
          "id" : "cc8562509eab44abf5636024201d226e900befbf",
          "msg" : "Use qpOASES for platoon MPC quadratic programs",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "delete",
              "file" : "algorithm/platoon/mpc/platoon_qp_polish.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/condition_sampler.cpp",
            "plan/prepare/prepare_platoon.hpp",
            "Testing/platoon_safety_test.cpp",
            "docs/platoon/qpoases_timeout_replay_results.csv",
            "tools/platoon_mpc_replay.cpp",
            "tools/platoon_mpc_batch_replay.py",
            "Testing/platoon_failure_csv_test.cpp",
            "docs/platoon/qpoases_timeout_replay.md",
            "data/config/cfg_platoon.cpp",
            "docs/platoon/time_headway_mpc.md",
            "data/config/cfg_platoon.hpp",
            "Testing/platoon_lane_change_test.cpp",
            "Testing/platoon_lattice_test.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "config/platoon.yaml",
            "plan/prepare/prepare_platoon.cpp",
            "Testing/platoon_qp_solver_test.cpp"
          ],
          "commitId" : "41584d5d806680b17697bd92d592b69dbc26b4bb",
          "timestamp" : 1789880042000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Gate platoon following by ego path and mitigate MPC timeouts\u000a",
          "date" : "2026-09-20 12:54:02 +0800",
          "id" : "41584d5d806680b17697bd92d592b69dbc26b4bb",
          "msg" : "Gate platoon following by ego path and mitigate MPC timeouts",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/platoon_mpc_replay.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/qpoases_timeout_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/condition_sampler.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/platoon_mpc_batch_replay.py"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/qpoases_timeout_replay_results.csv"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/maps/ogm_config_utils.h",
            "ssep/maps/ogm.cc",
            "ssep/maps/ogm_limits.h",
            "ssep/maps/ogm_config_utils.cc"
          ],
          "commitId" : "675478c9fb0a41ff880dbf9d15691dcb1ecc6c05",
          "timestamp" : 1789884882000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 限制搜索地图范围并校验 OGM 分配尺寸\u000a\u000a搜索工作空间每边限制为 3000 米，保留每侧 10 米扩边。统一检查普通与 Proto 构造入口的范围、分辨率及栅格索引容量，在分配前拒绝异常输入。补充边界、UTM、扩边和溢出回归测试。\u000a",
          "date" : "2026-09-20 14:14:42 +0800",
          "id" : "675478c9fb0a41ff880dbf9d15691dcb1ecc6c05",
          "msg" : "fix: 限制搜索地图范围并校验 OGM 分配尺寸",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_config_utils.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/maps/ogm_limits.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_config_utils.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "Testing/reference_line_replan_test.cpp",
            "tasks/deciders/search_decider/seaside_junction_search_decider.cpp",
            "tasks/plan/ssep_task.hpp",
            "tasks/plan/ssep_task.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "Testing/search_decider_lifecycle_test.cpp",
            "Testing/routing_transition_test.cpp",
            "tasks/deciders/search_decider/open_space_search_decider.cpp",
            "tasks/deciders/search_decider/normal_junction_search_decider.cpp",
            "tasks/deciders/search_decider/reverse_search_decider.cpp",
            "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp",
            "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp",
            "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
          ],
          "commitId" : "5de9ede7b0ef7ce9a53a87446f936cad038663f7",
          "timestamp" : 1789884899000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 阻止取消任务后重启搜索或接收旧结果\u000a\u000a统一搜索决策器的有效任务门禁，在环境构建前清理取消和无任务请求。SsepTask 在 Execute、Reset、提交和消费路径作废旧结果，保留后台 watcher 防止重叠提交。覆盖取消、同 ID 恢复、任务切换和新任务恢复的回归测试。\u000a",
          "date" : "2026-09-20 14:14:59 +0800",
          "id" : "5de9ede7b0ef7ce9a53a87446f936cad038663f7",
          "msg" : "fix: 阻止取消任务后重启搜索或接收旧结果",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/out_yard_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/bridge_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/reverse_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/open_space_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/seaside_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/normal_junction_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/ex_lane_change_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/into_yard_junction_search_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
          ],
          "commitId" : "f77cf0272d003a7fdba607e9c35676e7d7d0fba7",
          "timestamp" : 1789884911000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补齐牵引车泊车规划器的粗路径输出\u000a\u000a单段、多段及拉直模式规划记录优化前的粗路径，供搜索结果展示使用。每次规划和拉直失败回退时清空旧记录，避免展示上一轮或失败分支的路径。\u000a",
          "date" : "2026-09-20 14:15:11 +0800",
          "id" : "f77cf0272d003a7fdba607e9c35676e7d7d0fba7",
          "msg" : "fix: 补齐牵引车泊车规划器的粗路径输出",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/planner_utils.cc",
            "ssep/scenarios/planner_utils.h",
            "hmi/draw/draw_ssep.cpp",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/common/utils/imv_pass_point.h",
            "plan/prepare/ssep_input_params.hpp",
            "hmi/draw/draw_map.cpp",
            "ssep/ssep_planner.cc",
            "data/ssep/ssep_ec.cpp",
            "data/ssep/ssep_activation.cpp",
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "Testing/hmi_collision_render_test.cpp"
          ],
          "commitId" : "00794a2712bad54f003f16d5d29ac13b8c7c8c7e",
          "timestamp" : 1789885030000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 在环境构建阶段统一途经点判定与显示\u000a\u000aIMV 和牵引车泊车使用最终环境姿态及实际搜索参数判定途经点，同步有效点至搜索输入和界面，并兼容旧录包入口。接收新任务时保留新任务自己的途经点显示。采样前排除非有限姿态及超范围起终点，补充场景与绘图回归测试。\u000a",
          "date" : "2026-09-20 14:17:10 +0800",
          "id" : "00794a2712bad54f003f16d5d29ac13b8c7c8c7e",
          "msg" : "fix: 在环境构建阶段统一途经点判定与显示",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/common/utils/imv_pass_point.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/planner_utils.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "plan/prepare/ssep_input_params.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_map.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/hmi_collision_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_ssep.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/planner_utils.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/mpc/mpc_config.hpp",
            "Testing/platoon_safety_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "Testing/platoon_failure_case_test.cpp",
            "algorithm/platoon/mpc/failure_case.cpp",
            "algorithm/lattice/lattice.cpp",
            "data/config/cfg_platoon.cpp",
            "algorithm/platoon/platoon_safety.hpp",
            "docs/platoon/time_headway_mpc.md",
            "data/config/cfg_platoon.hpp",
            "Testing/platoon_lattice_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "config/platoon.yaml",
            "plan/prepare/prepare_platoon.cpp"
          ],
          "commitId" : "fa7825775cefad3a2023020aacd4c5b98ef2ffd2",
          "timestamp" : 1789956979000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Revise platoon braking reserve and leader deceleration limits\u000a",
          "date" : "2026-09-21 10:16:19 +0800",
          "id" : "fa7825775cefad3a2023020aacd4c5b98ef2ffd2",
          "msg" : "Revise platoon braking reserve and leader deceleration limits",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_case_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/failure_case.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/mpc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/mpc/mpc_config.hpp",
            "Testing/platoon_safety_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "Testing/platoon_failure_case_test.cpp",
            "algorithm/platoon/mpc/failure_case.cpp",
            "algorithm/lattice/lattice.cpp",
            "data/config/cfg_platoon.cpp",
            "docs/platoon/time_headway_mpc.md",
            "data/config/cfg_platoon.hpp",
            "Testing/platoon_lattice_test.cpp",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "config/platoon.yaml",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "plan/prepare/prepare_platoon.cpp"
          ],
          "commitId" : "36b6c645fdaa74947e48ace47702e028bbf13def",
          "timestamp" : 1789958688000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Use ego platoon deceleration limit for leader braking\u000a",
          "date" : "2026-09-21 10:44:48 +0800",
          "id" : "36b6c645fdaa74947e48ace47702e028bbf13def",
          "msg" : "Use ego platoon deceleration limit for leader braking",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/failure_case.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/mpc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_case_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/time_headway_mpc.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/keb_fixed_tail_test.cpp",
            "algorithm/plan/keb_optimizer.cpp",
            "algorithm/plan/keb_optimizer.hpp"
          ],
          "commitId" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
          "timestamp" : 1789969553000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按优化路径目标投影修正 KEB 验收边界\u000a\u000a动态约束验收使用目标在优化路径上的投影弧长，路沿间距与障碍物\u000a碰撞验收使用重采样路径上的投影，避免混用参考线弧长造成误检或漏检。\u000a保留完整延长段输出，同步覆盖 SSEP 与 Lane Follow 共用的优化入口。\u000a\u000a新增路径缩短、路径加长及目标位于采样点之间的边界测试。\u000a验证：工程 task 构建通过，KebFixedTailTest 共 7 项通过。\u000a\u000a已知限制：全局最近投影在优化后回环邻近段可能存在歧义；当前测试\u000a覆盖投影与裁剪边界，尚未覆盖实际验收调用链或原 bag 回放。\u000a",
          "date" : "2026-09-21 13:45:53 +0800",
          "id" : "a64dd4a6b8729a84db4812a0740662b1d14f2fa4",
          "msg" : "fix: 按优化路径目标投影修正 KEB 验收边界",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/keb_fixed_tail_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/keb_optimizer.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/draw/draw_collision_detection.cpp",
            "Testing/hmi_collision_render_test.cpp",
            "data/lattice/ogm_crash_data.cpp"
          ],
          "commitId" : "9ef4fb30bc8ae80e1dc23ff06220570ce1812af8",
          "timestamp" : 1789977411000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按首次碰撞位置绘制车体并清理上层碰撞状态\u000a\u000a使用路径弧长恢复碰撞区间内的插值比例，使 HMI 车体框与首次命中位置一致。补齐上层检测关闭、无命中及重置时的索引和距离清理，增加上下层绘制回归与快照诊断。\u000a",
          "date" : "2026-09-21 15:56:51 +0800",
          "id" : "9ef4fb30bc8ae80e1dc23ff06220570ce1812af8",
          "msg" : "fix: 按首次碰撞位置绘制车体并清理上层碰撞状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_collision_detection.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/hmi_collision_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/ogm_crash_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc",
            "ssep/coarse_search/evaluator/evaluator.h",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_tables_batch.py",
            "ssep/coarse_search/evaluator/shortest_path_heur_table.h",
            "ssep/coarse_search/evaluator/trailer_shortest_path_heur_computer.cc",
            "ssep/test/CMakeLists.txt",
            "ssep/coarse_search/evaluator/trailer_heuristic_metadata.h",
            "data/config/cfg_ssep.cpp",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/README.md",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/shortest_path_expander.h",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/package_generator_runtime.py",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_shortest_path_heur_cli.cc",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_package_generator_runtime.py",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/batch_jobs.example.json",
            "ssep/coarse_search/evaluator/trailer_shortest_path_heur_computer.h",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/shortest_path_expander.cc",
            "ssep/test/trailer_heuristic_table_test.cc",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_generate_tables_batch.py"
          ],
          "commitId" : "a29f2da93480e3b9ce431f0aa1f82dca409796b9",
          "timestamp" : 1789977470000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 按车型校验压缩启发表并支持多服务器生成\u000a\u000a为车头轴距、挂车轴距、铰接偏移及前后曲率建立版本化元数据，区分前进后退可达状态并压缩存储。补充原子生成、加载缓存与参数匹配校验，以及多服务器任务和运行时打包脚本。通用双向搜索按车辆参数加载，停车搜索尚不消费该表。Python 15 项及启发表 14 项回归通过。\u000a",
          "date" : "2026-09-21 15:57:50 +0800",
          "id" : "a29f2da93480e3b9ce431f0aa1f82dca409796b9",
          "msg" : "feat: 按车型校验压缩启发表并支持多服务器生成",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_shortest_path_heur_computer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/trailer_heuristic_table_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_package_generator_runtime.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_shortest_path_heur_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/shortest_path_heur_table.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_shortest_path_heur_computer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/evaluator.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/README.md"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_ssep.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_tables_batch.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/evaluator/trailer_heuristic_metadata.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/batch_jobs.example.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/shortest_path_expander.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/shortest_path_expander.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_generate_tables_batch.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/package_generator_runtime.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/tools/export_driver_search_guides.py",
            "ssep/offboard/tools/test_export_driver_search_guides.py",
            "docs/ssep/driver_search_guide_export.md",
            "offboard/bag_to_keb_scene/snapshot_vehicle_trace.cc",
            "ssep/offboard/tools/plot_driver_search_guides.py",
            "ssep/offboard/tools/export_trailer_search_guide.py",
            "offboard/bag_to_keb_scene/CMakeLists.txt"
          ],
          "commitId" : "8e42114286b5d15774764bd5907dd4f6d7f5bb53",
          "timestamp" : 1789977486000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 从司机快照提取姿态引导线并生成核对图\u000a\u000a导出人工驾驶车头和挂车轨迹，按档位、有效性和连续性选择倒车段，支持起终姿态匹配、重采样及 YAML 输出。提供可复用命令和路径可视化，9 项导出测试通过。\u000a",
          "date" : "2026-09-21 15:58:06 +0800",
          "id" : "8e42114286b5d15774764bd5907dd4f6d7f5bb53",
          "msg" : "feat: 从司机快照提取姿态引导线并生成核对图",
          "paths" : [
            {
              "editType" : "add",
              "file" : "offboard/bag_to_keb_scene/snapshot_vehicle_trace.cc"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep/driver_search_guide_export.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/export_driver_search_guides.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/export_trailer_search_guide.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/plot_driver_search_guides.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/tools/test_export_driver_search_guides.py"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_curvature_test.cpp",
            "Testing/CMakeLists.txt",
            "data/ssep/ssep_util.cpp"
          ],
          "commitId" : "ce030599417433c0d9062c791983f1bca51b52cd",
          "timestamp" : 1789977551000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正 SSEP 三点曲率计算的纵坐标读取\u000a\u000a中间点误用 x 作为 y，导致曲率依赖世界坐标平移。改为读取 y，并补圆弧曲率、UTM 平移不变性及重载一致性回归，3 项测试通过。\u000a",
          "date" : "2026-09-21 15:59:11 +0800",
          "id" : "ce030599417433c0d9062c791983f1bca51b52cd",
          "msg" : "fix: 修正 SSEP 三点曲率计算的纵坐标读取",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/ssep_path_curvature_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_util.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h",
            "ssep/test/keb_collision_weight_test.cc",
            "ssep/test/CMakeLists.txt",
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "ssep/scenarios/parking_staged_optimization.h",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/test/tractor_trailer_cusp_initialization_test.cc",
            "docs/ssep/parking_sustained_curvature.md",
            "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h",
            "ssep/keb_optimizer/keb_utils.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/scenarios/tractor_trailer_sustained_curvature.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/keb_optimizer/keb_utils.h",
            "docs/ssep/parking_staged_optimization.md",
            "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc",
            "ssep/test/tractor_trailer_sustained_curvature_test.cc"
          ],
          "commitId" : "5d7ed8fa26b67931e904923c0535e8ad6979c176",
          "timestamp" : 1789977722000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加停车分阶段优化并统一换挡与曲率校验\u000a\u000a同步强化运动学和碰撞代价，仅保留通过完整验收且一致性改善的候选，失败阶段原地恢复状态与步长。统一牵引车出发方向及弯道换挡曲率初值，将真实机械上限与求解余量分开，并增加持续大曲率距离校验和碰撞位置诊断。新增初始化、倍率、恢复、曲率和阶段回归；统一 SSEP 72 项测试及四份现场快照通过。\u000a",
          "date" : "2026-09-21 16:02:02 +0800",
          "id" : "5d7ed8fa26b67931e904923c0535e8ad6979c176",
          "msg" : "feat: 增加停车分阶段优化并统一换挡与曲率校验",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_utils.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/tractor_trailer_sustained_curvature_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/parking_staged_optimization.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/tractor_trailer_sustained_curvature.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/keb_collision_weight_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/tractor_trailer_cusp_initialization_test.cc"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep/parking_sustained_curvature.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_utils.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep/parking_staged_optimization.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/compact_proto_codec.cpp",
            "ssep/offboard/ssep_planner_wrapper.cc",
            "ssep/test/search_guide_loader_test.cc",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "ssep/param_loader/search_guide_loader.cc",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "ssep/data_structures/ssep_input.cc",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "ssep/test/local_regression/generate_pose_regression.py",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/pnc_scene/compact_replay_input.proto",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "ssep/offboard/scene_replay/replay_scene_frame_cli.cc",
            "ssep/protos/scene.proto",
            "ssep/offboard/generate_scene_data/transform_to_body_frame_cli.cc",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "ssep/data_structures/search_guide.h",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "ssep/test/local_regression/test_pose_regression.py",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "fa385029dd592461c18533baeaeb8e9962181c04",
          "timestamp" : 1789977761000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 统一保存和回放带挂车姿态的搜索引导库\u000a\u000a复用现有 YAML 引导库，支持车头及挂车姿态并校验点数、坐标和有限值。Full 保留原值，Compact 复用量化 XY 并无损保存姿态元数据，兼容旧 XY 引导线，支持 Candidate 独立恢复。同步独立 SSEP 快照与坐标转换，完成字段生成、兼容性检查及编解码回归。\u000a",
          "date" : "2026-09-21 16:02:41 +0800",
          "id" : "fa385029dd592461c18533baeaeb8e9962181c04",
          "msg" : "feat: 统一保存和回放带挂车姿态的搜索引导库",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/generate_pose_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/param_loader/search_guide_loader.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_pose_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/search_guide.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/replay_scene_frame_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/search_guide_loader_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_planner_wrapper.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/scene.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_input.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/generate_scene_data/transform_to_body_frame_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/test/search_guide_scene_test.cc",
            "ssep/scenarios/trailer_search_guide_progress.h",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "docs/ssep/trailer_search_guide.md",
            "ssep/test/ssep_planner_test.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "ssep/test/trailer_search_guide_test.cc",
            "ssep/coarse_search/evaluator/trailer_search_guide.h",
            "ssep/data_structures/search_guide_match.h",
            "ssep/coarse_search/evaluator/trailer_search_guide.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/scenarios/search_guide_fallback_planner.h",
            "hmi/draw/draw_map.cpp",
            "ssep/ssep_planner.cc",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h",
            "data/ssep/ssep_ec.cpp",
            "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
          ],
          "commitId" : "647f84a8e409d94048136ff98d919a3afe9a3538",
          "timestamp" : 1789977796000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 自动匹配挂车参考路径引导停车搜索并接入分阶段验收\u000a\u000a复用共享引导库，区分多段任务与倒车重搜索，按实际起点渐变适配挂轴参考并保留匹配区间顺序，防止重叠路径投影回退。引导失败回退普通搜索，记录粗路径，HMI 显示停车参考。接入可配置多步优化与持续曲率验收，明确真实机械上限。补匹配、进度、非法输入及重叠边界测试，四份现场快照回归通过。\u000a",
          "date" : "2026-09-21 16:03:16 +0800",
          "id" : "647f84a8e409d94048136ff98d919a3afe9a3538",
          "msg" : "feat: 自动匹配挂车参考路径引导停车搜索并接入分阶段验收",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/scenarios/trailer_search_guide_progress.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/trailer_search_guide_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep/trailer_search_guide.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/evaluator/trailer_search_guide.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/evaluator/trailer_search_guide.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/search_guide_fallback_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/search_guide_match.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_map.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/search_guide_scene_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/search_decider/forward_search_decider.cpp"
          ],
          "commitId" : "868661bc704beda97ee046170900442506bbc4de",
          "timestamp" : 1789977811000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 按停车场景控制指令重规划的拉直点生成\u000a\u000a匹配当前请求场景读取 enable_command_replan_straighten，津西关闭自动拉直时保留任务途经点并清除残留拉直状态。覆盖开关关闭、开启和缺省行为回归。\u000a",
          "date" : "2026-09-21 16:03:31 +0800",
          "id" : "868661bc704beda97ee046170900442506bbc4de",
          "msg" : "feat: 按停车场景控制指令重规划的拉直点生成",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/normal_junction_ec.cpp",
            "data/ssep/out_yard_junction_ec.cpp"
          ],
          "commitId" : "199428b11ed85db60ccd57733a5ab3d6040c674f",
          "timestamp" : 1789977846000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 调整津西和中铁联集搜索通道构造\u000a\u000a津西普通路口不构造默认终点通道，中铁联集出堆场不构造默认起点通道，沿用各场景重建前清空通道的流程。已完成 pnc_node 编译。\u000a",
          "date" : "2026-09-21 16:04:06 +0800",
          "id" : "199428b11ed85db60ccd57733a5ab3d6040c674f",
          "msg" : "fix: 调整津西和中铁联集搜索通道构造",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/guide_line.cpp"
          ],
          "commitId" : "f64f308926a530239acc7205a5bbb19eaaaacb8d",
          "timestamp" : 1789977846000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 将 SSEP 首段引导线向起点前延伸二十米\u000a\u000a首段起点前的几何补线由十米增加为二十米，沿用原方向和半米采样间隔。已完成 pnc_node 编译。\u000a",
          "date" : "2026-09-21 16:04:06 +0800",
          "id" : "f64f308926a530239acc7205a5bbb19eaaaacb8d",
          "msg" : "fix: 将 SSEP 首段引导线向起点前延伸二十米",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/keb_optimizer/imv_keb_optimizer.cc"
          ],
          "commitId" : "78c221b234cf8aacf42aac13c5d3935c249324c6",
          "timestamp" : 1789977846000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "chore: 减少 IMV 运动学验收失败时的逐点日志\u000a\u000a保留失败边和归一化误差日志，关闭整条路径的逐点打印，避免现场重复失败产生大量日志。\u000a",
          "date" : "2026-09-21 16:04:06 +0800",
          "id" : "78c221b234cf8aacf42aac13c5d3935c249324c6",
          "msg" : "chore: 减少 IMV 运动学验收失败时的逐点日志",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_platoon.hpp",
            "Testing/platoon_safety_test.cpp",
            "Testing/platoon_mpc_core_test.cpp",
            "Testing/platoon_failure_csv_test.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.hpp",
            "data/config/cfg_platoon.cpp",
            "docs/platoon/qp_warm_start.md",
            "data/config/cfg_platoon.hpp",
            "Testing/platoon_lane_change_test.cpp",
            "Testing/platoon_lattice_test.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/platoon_qp_solver_test.cpp",
            "plan/prepare/prepare_platoon.cpp",
            "algorithm/platoon/mpc/qp_solver.hpp"
          ],
          "commitId" : "b7390ea5f18ff317f0e6dc095eb3c0e264a0f0e1",
          "timestamp" : 1789979267000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Optimize platoon QP reuse and gate low-speed following\u000a\u000aRetain qpOASES state for compatible problems and remove rows guaranteed by\u000anative variable bounds. Honor the configured MPC time budget without the\u000a40 ms clamps. Add a configurable 0.5 m/s minimum ego speed for platoon\u000aeligibility, with diagnostics and backward-compatible config serialization.\u000a\u000aValidate with distributed production builds, 46 core tests, 45 targeted\u000aeligibility/integration tests, and recorded CSV replay. Document remaining\u000acold-start performance limitations and existing broader integration failures.\u000a",
          "date" : "2026-09-21 16:27:47 +0800",
          "id" : "b7390ea5f18ff317f0e6dc095eb3c0e264a0f0e1",
          "msg" : "Optimize platoon QP reuse and gate low-speed following",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/platoon/qp_warm_start.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.hpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "sink/ros_sink_platoon_info.hpp",
            "Testing/ego_trajectory_encoding_test.cpp",
            "sink/ros_sink_platoon_info.cpp",
            "Testing/platoon_lane_change_collision_test.cpp",
            "data/platoon/platoon_info.cpp",
            "CMakeLists.txt",
            "sink/ego_trajectory_encoding.hpp",
            "docs/platoon/platoon_manager_vehicle_info_interface_zh.md",
            "sink/ros_sink_platoon_lane_change.hpp",
            "sink/ros_sink_platoon_lane_change.cpp",
            "docs/platoon/lane_change.md",
            "Testing/platoon_lane_change_test.cpp",
            "sink/module.cpp"
          ],
          "commitId" : "fdb289b855a8018d9a7302101bafe99deb354d19",
          "timestamp" : 1789994399000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Publish compact current trajectory and lane-change fields in PNCInfo\u000a",
          "date" : "2026-09-21 20:39:59 +0800",
          "id" : "fdb289b855a8018d9a7302101bafe99deb354d19",
          "msg" : "Publish compact current trajectory and lane-change fields in PNCInfo",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/ego_trajectory_encoding_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "delete",
              "file" : "sink/ros_sink_platoon_lane_change.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_platoon_info.hpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ros_sink_platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/module.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/lane_change.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_collision_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "sink/ego_trajectory_encoding.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "delete",
              "file" : "sink/ros_sink_platoon_lane_change.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/generated_variant_config_patch_test.cpp",
            "Testing/path_pair_validation_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.hpp",
            "scenarios/task_condition_evaluator.hpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp",
            "scenarios/task_condition_evaluator.cpp",
            "Testing/cfg_scenarios_proto_codec_test.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "config/config_truck/scenario.yaml",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/algorithm_replay/generated/scenario_task_chains.json",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "tasks/other_tasks/create_guide_line.cpp",
            "docs/reverse_pickup_search.md",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "tasks/other_tasks/stitch_path_data_to_path.cpp",
            "Testing/reverse_pickup_stage_selector_test.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/cfg_scenarios_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/config.proto",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "data/config/cfg_stage.cpp",
            "data/config/cfg_stage.hpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "fc82595f13ddc93bf540df4db32d17980c9648b5",
          "timestamp" : 1789995244000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 用任务选择组统一 Bulk SSEP 规划链\u000a\u000a使用可选 SSEP_WAIT、TRAILER_REVERSE 和默认 FORWARD 组选择差异任务，公共任务只在 task 列表配置一次。\u000a等待期间复用历史引导线和路径，继续执行现有纵向停车链；无 WAIT 配置保持正常任务执行。\u000a删除 ssep_result_tasks 及冗余过滤，保留 Proto 字段号并同步回放合同与生成物，覆盖旧配置兼容和任务选择回归。\u000a\u000a验证：最终改动集 346 项测试通过、2 项可选数据测试跳过；合同生成和兼容性检查通过，PNC 编译成功。\u000a",
          "date" : "2026-09-21 20:54:04 +0800",
          "id" : "fc82595f13ddc93bf540df4db32d17980c9648b5",
          "msg" : "refactor: 用任务选择组统一 Bulk SSEP 规划链",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/create_guide_line.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reverse_pickup_stage_selector_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/cfg_scenarios_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/algorithm_replay/generated/scenario_task_chains.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/path_pair_validation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/scenario.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/generated_variant_config_patch_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/bulkload_scenario/bulkload_ssep_forward_stage.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/cfg_scenarios_proto_codec_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_stage.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/other_tasks/stitch_path_data_to_path.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/reverse_pickup_search.md",
            "Testing/path_pair_validation_test.cpp",
            "plan/prepare/prepare_default.cpp"
          ],
          "commitId" : "e86593c17bb6ce216cdbe05e45c6bddd9b4e46fa",
          "timestamp" : 1789995244000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留倒车历史回落的车头挂车配对\u000a\u000a上一帧输出失效后，从 last_path 恢复 TT 倒车路径时使用成对转换，避免单路径转换丢失挂车历史。\u000a配对缺失或匹配失败时清理完整输出；补充真实预处理到 WAIT 拼接的恢复、缺配对拒绝和前进路径回归。\u000a",
          "date" : "2026-09-21 20:54:04 +0800",
          "id" : "e86593c17bb6ce216cdbe05e45c6bddd9b4e46fa",
          "msg" : "fix: 保留倒车历史回落的车头挂车配对",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/path_pair_validation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_default.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/routing_map_guard_test.cpp",
            "tasks/deciders/long_decider/constrain_decider.cpp"
          ],
          "commitId" : "8131459bc5f1581d87871d05c08d3a63e876e603",
          "timestamp" : 1790000088000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正非零自车路径起点的 OGM 约束位置\u000a\u000a地面和上层碰撞约束在查询路径位置时加回 ego_match.s()，保留已按自车计算的碰撞距离，避免重复扣减。碰撞轮廓直接使用命中索引，避免固定采样距离推算造成偏移。\u000a\u000a新增零与非零起点、正反向及上下层约束回归；RelWithDebInfo 构建和工程生成文件检查通过，pnc_routing_map_guard_test 全部 58 项测试通过。\u000a",
          "date" : "2026-09-21 22:14:48 +0800",
          "id" : "8131459bc5f1581d87871d05c08d3a63e876e603",
          "msg" : "fix: 修正非零自车路径起点的 OGM 约束位置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/routing_map_guard_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "proto/plan_data.proto",
            "data/plan/ssep_data.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "tasks/plan/ssep_task.hpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "tasks/plan/ssep_task.cpp",
            "Testing/search_decider_lifecycle_test.cpp",
            "Testing/routing_transition_test.cpp",
            "data/other/parking_pass_progress.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "data/other/parking_pass_progress.hpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "data/ssep/forward_ec.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "plan/prepare/prepare_state.cpp",
            "Testing/parking_pass_progress_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/ssep/forward_ec.hpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "a3271a566b889611d111a2ef05255397fc88c3e0",
          "timestamp" : 1790001416000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 重搜索时移除已完成的停车途经点\u000a\u000a按任务身份和实际换向进度记录停车途经点完成状态，跨重搜和路径清空保留，\u000a取消、换任务或任务几何变化时失效。仅清除搜索请求中的旧途经点及其采样，\u000a保留原始任务点、场景匹配、拉直和历史路径复用策略。\u000a\u000a补充停车异步结果归属校验及单次消费，避免同 ID 任务点变更后接收旧结果。\u000a新增 Full/Compact 原值持久化和旧消息兼容处理，并同步生成物及合同说明。\u000a\u000a验证：117 项 SSEP 回归通过；拉直开关 true/false/缺省与途经点完成状态的\u000a6 种组合通过；任务切换及 Full/Compact 回归已通过；生成物检查通过；\u000apnc_node 已经项目分布式编译入口构建成功。\u000a",
          "date" : "2026-09-21 22:36:56 +0800",
          "id" : "a3271a566b889611d111a2ef05255397fc88c3e0",
          "msg" : "fix: 重搜索时移除已完成的停车途经点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "data/other/parking_pass_progress.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_state.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/parking_pass_progress_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "data/other/parking_pass_progress.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/scenarios/tractor_trailer_parking_maneuver.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/ssep_planner.cc"
          ],
          "commitId" : "58c0bd4539ab857f22a735775d14f6a3a5f1c864",
          "timestamp" : 1790042983000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 完善多段停车暖启动验收与搜索兜底\u000a\u000a停车重搜索优先对剩余历史路径进行多步优化，手动热启动和换向重搜均可进入；失败后才执行引导搜索与普通搜索。\u000a移除已完成途经点后保留前进调整能力，允许多段停车双向起步，保持单段倒车及有序途经点约束。首步候选按实际方向执行碰撞检查，避免未知方向漏检或虚增换向代价。\u000a统一历史路径方向、固定尾段运动学、机械及持续曲率、全车碰撞和端点验收。实测首控制保持固定，未知首曲率在多步优化中使用真实机械上限。\u000a\u000a验证：57 项相关 C++ 回归通过，5 组现场回放通过，pnc_node 与回放工具分布式构建通过。\u000a",
          "date" : "2026-09-22 10:09:43 +0800",
          "id" : "58c0bd4539ab857f22a735775d14f6a3a5f1c864",
          "msg" : "fix: 完善多段停车暖启动验收与搜索兜底",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_maneuver.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/test_scene_vis_geometry.py",
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "ssep/test/local_regression/test_scene_vis_obstacles.py",
            "ssep/common/utils/scene_frame_visualization.cc"
          ],
          "commitId" : "e117ac9fd5bdc34d2d983a644cf009fe394e6952",
          "timestamp" : 1790042993000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 对齐停车回放挂车轮廓与实际障碍输入\u000a\u000a修正网页当前、目标和路径挂车框的铰接偏移符号，补齐离线绘图的铰接偏移，统一车辆模型的参考点。\u000a存在精确障碍输入时默认显示原始障碍线，将派生显示轮廓独立标注并允许切换；兼容旧快照显示。\u000a\u000a验证：2 项执行生产 JavaScript 的几何与图层回归通过，可视化服务构建通过。\u000a",
          "date" : "2026-09-22 10:09:53 +0800",
          "id" : "e117ac9fd5bdc34d2d983a644cf009fe394e6952",
          "msg" : "fix: 对齐停车回放挂车轮廓与实际障碍输入",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_scene_vis_obstacles.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/common/utils/scene_frame_visualization.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_scene_vis_geometry.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/routing_transition_test.cpp",
            "data/map/pnc_map/routing_extension/routing_data.cpp"
          ],
          "commitId" : "6143bcb0a88322720d9a9cebaa94d13396afa6b7",
          "timestamp" : 1790052360000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按实际车道航向判断岸边平行连接\u000a\u000a岸边道路接入非纵向道路时，改用驶出终点与驶入起点的车道航向判断形状，保留原有角度阈值，避免场区岸线配置与地图不一致时误判为交叉。\u000a\u000a补充同向、反向、垂直及旋转场景回归，并覆盖潍坊默认岸线配置导致 A002 任务误分类的问题。\u000a\u000a验证：路由回归 91 项通过；A002 任务仿真回放进入 PARALLEL，终点延伸 25 米且搜索成功。\u000a",
          "date" : "2026-09-22 12:46:00 +0800",
          "id" : "6143bcb0a88322720d9a9cebaa94d13396afa6b7",
          "msg" : "fix: 按实际车道航向判断岸边平行连接",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_transition_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/open_space_ec.cpp"
          ],
          "commitId" : "39b5eba2e4e5c710d7a272e42e21bb0e25de2e50",
          "timestamp" : 1790052367000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加开放空间搜索模式与终点诊断日志\u000a\u000a构造搜索终点时记录任务、形状模式、场景、搜索阶段、回退条件和车型；记录终点来源、参考线选择、延伸距离、目标 s、参考线长度及最终车道与坐标。\u000a\u000a日志随搜索环境构造输出，便于区分模式覆盖与参考线长度不足。\u000a\u000a验证：PNC 与专项测试目标编译通过；任务回放已采集修改前后模式和终点计算日志。\u000a",
          "date" : "2026-09-22 12:46:07 +0800",
          "id" : "39b5eba2e4e5c710d7a272e42e21bb0e25de2e50",
          "msg" : "feat: 增加开放空间搜索模式与终点诊断日志",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "data/plan/ssep_data.cpp",
            "data/plan/ssep_data.hpp",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "tasks/deciders/search_decider/forward_search_decider.cpp",
            "docs/ssep_scenario_config_lifecycle.md",
            "ssep/test/ssep_planner_test.cc",
            "Testing/search_decider_lifecycle_test.cpp",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h",
            "ssep/ssep_planner.cc",
            "Testing/CMakeLists.txt",
            "data/ssep/ssep_ec.cpp",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "96062bb8b9e0ebb5de09c55f829327aa9bdb3f6f",
          "timestamp" : 1790059273000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持津西自动换向出场及剩余路径重搜\u000a\u000a津西拖挂车 BulkOut 使用 Auto 出场策略，优先纯前进，失败后在共用粗搜索预算内允许倒车调整，并要求最终前进接入。\u000a增加方向状态区分和超时完整候选保留，保持旧场景行为。\u000a重搜按执行索引裁剪历史，只匹配当前剩余段；无效历史回退完整搜索，指令重搜清除旧拉直状态。\u000a补充配置、粗搜索、历史裁剪和在线重搜生命周期回归。\u000a\u000a验证：相关测试 505 项通过、61 项按场景跳过；生成物和协议兼容性检查通过；pnc_node 分布式编译通过。\u000a",
          "date" : "2026-09-22 14:41:13 +0800",
          "id" : "96062bb8b9e0ebb5de09c55f829327aa9bdb3f6f",
          "msg" : "feat: 支持津西自动换向出场及剩余路径重搜",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/forward_search_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_scenario_config_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/app/fsm/task_fsm/task_travel/task_travel_fsm.cpp",
            "Testing/scenario_search_exit_test.cpp",
            "Testing/CMakeLists.txt",
            "docs/ssep_search_lifecycle.md"
          ],
          "commitId" : "58c22a82ed636a088416e5c9966bff51cfc233df",
          "timestamp" : 1790059293000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 防止出场换向时提前退出 Bulk 场景\u000a\u000a切段后等待当前路径和历史路径的末段信息一致，再使用历史引导线判断完成。\u000a取消因终点无法投影或超出引导线范围而直接退出的逻辑；换向停车只有到达真正末点才允许结束出场。\u000a保留无 SSEP 的原倒车出场分支，补充 9 项退出条件回归与现场原因说明。\u000a\u000a验证：9 项 Bulk 退出回归通过；相关测试集 376 项通过、61 项按场景跳过；pnc_node 编译通过。\u000a",
          "date" : "2026-09-22 14:41:33 +0800",
          "id" : "58c22a82ed636a088416e5c9966bff51cfc233df",
          "msg" : "fix: 防止出场换向时提前退出 Bulk 场景",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_fsm/task_travel/task_travel_fsm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scenario_search_exit_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/CMakeLists.txt",
            "Testing/bulk_speed_limit_test.cpp",
            "tasks/deciders/long_decider/constrain_decider.cpp"
          ],
          "commitId" : "966a15a594920fd936694ca4d276c19ea7411cb1",
          "timestamp" : 1790060053000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按路径分段优化出堆场限速\u000a\u000a根据原始段长和真实段尾投影计算沿程进度，剔除路径延长部分，每次切段后重新按起步档位提速。\u000a\u000a为非最后一段提前添加 15、10、5 米低速区约束，最后一段接路时不额外降速；保留独立停车约束职责，匹配失效时保持起步档。\u000a\u000a新增 8 项回归测试，覆盖换段、路径延长、倒车、弯路、短段、过终点和停车约束保留；构建及测试通过。\u000a",
          "date" : "2026-09-22 14:54:13 +0800",
          "id" : "966a15a594920fd936694ca4d276c19ea7411cb1",
          "msg" : "fix: 按路径分段优化出堆场限速",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/bulk_speed_limit_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/platoon/platoon_manager_vehicle_info_interface_zh.md",
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "algorithm/platoon/vehicle_info_to_obstacle.cpp",
            "algorithm/platoon/platoon_follow_target_builder.cpp",
            "data/platoon/platoon_info.hpp",
            "data/platoon/platoon_info.cpp",
            "plan/prepare/prepare_platoon.cpp",
            "Testing/platoon_follow_target_builder_test.cpp",
            "algorithm/platoon/platoon_leader_predictor.hpp"
          ],
          "commitId" : "fe57ba2ae116a729c218a2405d5bacaa4814d6db",
          "timestamp" : 1790061850000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: use received leader trajectories in auto-drive mode\u000a",
          "date" : "2026-09-22 15:24:10 +0800",
          "id" : "fe57ba2ae116a729c218a2405d5bacaa4814d6db",
          "msg" : "fix: use received leader trajectories in auto-drive mode",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/platoon_manager_vehicle_info_interface_zh.md"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/vehicle_info_to_obstacle.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/full_proto_snapshot_test.cpp",
            "replayer/scene_data/full_proto_snapshot.hpp",
            "replayer/main.cpp",
            "replayer/scene_data/full_proto_snapshot.cpp",
            "hmi/widget/full_proto_detail.hpp",
            "hmi/replayer_hmi.hpp",
            "replayer/logic.hpp",
            "CMakeLists.txt",
            "replayer/logic.cpp",
            "hmi/replayer_hmi.cpp",
            "hmi/node_hmi.hpp",
            "node/logic.cpp",
            "Testing/full_proto_detail_test.cpp",
            "node/main.cpp",
            "node/logic.hpp",
            "Testing/CMakeLists.txt",
            "hmi/widget/full_proto_detail.cpp",
            "hmi/node_hmi.cpp"
          ],
          "commitId" : "8d2254ca3442f45e7b69a312168204217a53177f",
          "timestamp" : 1790070987000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 为 PNC 和回放界面增加全量 Proto 树形查看窗口\u000a\u000a在两个 Qt 界面的显示菜单接入独立窗口，仅在打开或手动更新时请求\u000a数据线程编码当前 Full Proto，避免逐帧刷新和跨线程读取可变规划帧。\u000a无当前帧或更新失败时保留历史快照，并展示编码缺失信息。\u000a\u000a支持对象和数组按需展开、全部折叠，以及忽略大小写的不连续字符\u000a模糊搜索；搜索命中后自动展开父节点，提供前后跳转和快捷键。\u000a\u000a补充树形展示、快照历史、搜索、快捷键和 64 位精度回归测试。\u000a验证：pnc_node、pnc_replayer 构建通过，14 项相关测试全部通过。\u000a",
          "date" : "2026-09-22 17:56:27 +0800",
          "id" : "8d2254ca3442f45e7b69a312168204217a53177f",
          "msg" : "feat: 为 PNC 和回放界面增加全量 Proto 树形查看窗口",
          "paths" : [
            {
              "editType" : "add",
              "file" : "hmi/widget/full_proto_detail.hpp"
            },
            {
              "editType" : "edit",
              "file" : "node/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "node/logic.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/full_proto_snapshot_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/logic.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/full_proto_snapshot.hpp"
            },
            {
              "editType" : "add",
              "file" : "hmi/widget/full_proto_detail.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/node_hmi.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/full_proto_snapshot.cpp"
            },
            {
              "editType" : "edit",
              "file" : "node/logic.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/main.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/full_proto_detail_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/replayer_hmi.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/replayer_hmi.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/node_hmi.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "ssep/test/ssep_planner_test.cc",
            "ssep/scenarios/imv_search_extra_params.h",
            "ssep/scenarios/imv_general_planner.h",
            "ssep/scenarios/imv_enter_station_planner.h",
            "ssep/scenarios/imv_multi_segment_parking_planner.h",
            "ssep/scenarios/search_extra_params.h"
          ],
          "commitId" : "c53cfc5da9ae336a7070f0f08e067ebd3ce5c51e",
          "timestamp" : 1790078907000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 统一场景数值参数解析\u000a\u000a提取公共有限数及正数参数解析函数，保持缺省值和失败不写回语义。\u000aIMV 场景及方向代价复用公共解析，补充数值边界回归测试。\u000a\u000a验证：共享解析及 IMV 参数测试通过，增量分布式编译通过。\u000a",
          "date" : "2026-09-22 20:08:27 +0800",
          "id" : "c53cfc5da9ae336a7070f0f08e067ebd3ce5c51e",
          "msg" : "refactor: 统一场景数值参数解析",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_search_extra_params.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_enter_station_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/search_extra_params.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h"
          ],
          "commitId" : "6101fe90314cb6eaf505fce402f0d30c1d5e628e",
          "timestamp" : 1790078929000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 支持 Auto 出场局部倒车调整并外置调参\u000a\u000a保留纯前进优先，失败后按配置逐步增加初始倒车距离并尝试两侧姿态。\u000a全部重试共用时间预算，最终路径检查后退位移、完整车体碰撞与机械曲率。\u000a优化裕量和权重从场景 custom_params 读取，同步津西配置及通用参数命名。\u000a补充初始方向、真实倒车距离、转向和参数校验回归测试。\u000a\u000a验证：30 项 SSEP 测试及 6 项 IMV 参数测试通过；两个现场场景回放通过，\u000a碰撞和曲率验收通过；主程序、回放及测试目标增量分布式编译通过。\u000a",
          "date" : "2026-09-22 20:08:49 +0800",
          "id" : "6101fe90314cb6eaf505fce402f0d30c1d5e628e",
          "msg" : "fix: 支持 Auto 出场局部倒车调整并外置调参",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/generator.py",
            "replayer/scene_data/generated/compact_typed_field_codec.hpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_decoder.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.hpp"
          ],
          "commitId" : "95fdfbd553bb04a58ec73dfe4d00461845b79d62",
          "timestamp" : 1790085839000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "refactor: 去除生成源码中重复的 Schema 哈希注释\u000a\u000a保留 DO NOT EDIT 标记、运行时 schema 哈希和兼容性校验。\u000a清理仅用于注释的生成器参数，减少字段变化导致的无关文件 diff。\u000a\u000a验证：check-generated、check-proto-breaking 通过。\u000a",
          "date" : "2026-09-22 22:03:59 +0800",
          "id" : "95fdfbd553bb04a58ec73dfe4d00461845b79d62",
          "msg" : "refactor: 去除生成源码中重复的 Schema 哈希注释",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generator.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "tasks/deciders/long_decider/constrain_decider.hpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "tasks/deciders/long_decider/constrain_decider.cpp",
            "docs/bulk_open_space_speed_limit.md",
            "Testing/bulk_speed_limit_test.cpp",
            "data/config/cfg_long_plan.hpp",
            "config/config_truck/plan.yaml",
            "data/config/cfg_long_plan.cpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "b345ba5abc57b9fa1ef823badd1a6a2004fef669",
          "timestamp" : 1790085874000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持 bulk 和 open space 参数限速框\u000a\u000a在 CfgLongPlan 中按顶点数组加载限速框及统一速度，默认关闭。\u000a投影 SL 包络后，在车身前缘距入口 10 米内添加限速约束，\u000a限速位置保持框的 start_s，车身完全离开后释放，支持倒车和挂车尺寸。\u000a\u000a通过 typed Proto 保存配置，保留 UTM double 精度并使用 Zstd 压缩，\u000a支持 Full、Compact Recorded 和 Candidate 恢复以及旧消息默认关闭。\u000a\u000a验证：15 个限速测试、完整 scene_replay_foundation_test、\u000acheck-generated 和 check-proto-breaking 全部通过。\u000a",
          "date" : "2026-09-22 22:04:34 +0800",
          "id" : "b345ba5abc57b9fa1ef823badd1a6a2004fef669",
          "msg" : "feat: 支持 bulk 和 open space 参数限速框",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "add",
              "file" : "docs/bulk_open_space_speed_limit.md"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/bulk_speed_limit_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/trailer_detection_bag_to_html.py",
            "tools/trailer_detection_bag_to_html.md"
          ],
          "commitId" : "140da468cc3a9f8c4d547901b1b10487f1d5cded",
          "timestamp" : 1790129073000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: add standalone trailer detection bag-to-HTML converter\u000a",
          "date" : "2026-09-23 10:04:33 +0800",
          "id" : "140da468cc3a9f8c4d547901b1b10487f1d5cded",
          "msg" : "feat: add standalone trailer detection bag-to-HTML converter",
          "paths" : [
            {
              "editType" : "add",
              "file" : "tools/trailer_detection_bag_to_html.py"
            },
            {
              "editType" : "add",
              "file" : "tools/trailer_detection_bag_to_html.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "Testing/path_pair_validation_test.cpp",
            "docs/ssep_path_tangent_refinement.md",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/reversing_truck_path_task.cpp",
            "data/config/cfg_func_sw.hpp",
            "data/config/cfg_func_sw.cpp",
            "tasks/plan/reversing_truck_path_task.hpp",
            "config/config_truck/plan.yaml",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "c73d19c7f1d584a2d1913bd103f110156f785379",
          "timestamp" : 1790142306000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(plan): add configurable SSEP path heading refinement\u000a",
          "date" : "2026-09-23 13:45:06 +0800",
          "id" : "c73d19c7f1d584a2d1913bd103f110156f785379",
          "msg" : "feat(plan): add configurable SSEP path heading refinement",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/path_pair_validation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_path_tangent_refinement.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_objs.cpp"
          ],
          "commitId" : "828c6df22a9994afa42583fecb0c52264e05fa9b",
          "timestamp" : 1790143378000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正多车道场桥障碍物位置\u000a\u000a按云端场桥位置选择单车道侧边或多车道桥腿间隙，覆盖 2 至 6 车道布局。保留原有纵向 min_s 与负 s 补偿，避免障碍物沿车道方向偏移。\u000a",
          "date" : "2026-09-23 14:02:58 +0800",
          "id" : "828c6df22a9994afa42583fecb0c52264e05fa9b",
          "msg" : "fix: 修正多车道场桥障碍物位置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_objs.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/platoon/leader_reference.cpp",
            "algorithm/platoon/platoon_follow_target_builder.hpp",
            "algorithm/lattice/lattice.cpp",
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "algorithm/platoon/platoon_follow_target_builder.cpp",
            "Testing/platoon_response_test.cpp",
            "data/platoon/platoon_info.hpp",
            "data/platoon/platoon_info.cpp",
            "algorithm/platoon/platoon_leader_predictor.hpp",
            "Testing/platoon_follow_target_builder_test.cpp"
          ],
          "commitId" : "f67e4c414fa3d547ac8b45765f5afc7d9af46258",
          "timestamp" : 1790146146000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: preserve leader stop motion and separate trajectory freshness from coverage\u000a",
          "date" : "2026-09-23 14:49:06 +0800",
          "id" : "f67e4c414fa3d547ac8b45765f5afc7d9af46258",
          "msg" : "fix: preserve leader stop motion and separate trajectory freshness from coverage",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_response_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/leader_reference.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_follow_target_builder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_platoon.cpp"
          ],
          "commitId" : "e56ecb57a728d412ca05453a28b8db72cb48a05a",
          "timestamp" : 1790146926000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: MPC time budget 80ms\u000a",
          "date" : "2026-09-23 15:02:06 +0800",
          "id" : "e56ecb57a728d412ca05453a28b8db72cb48a05a",
          "msg" : "fix: MPC time budget 80ms",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/app/fsm/motion_fsm/motion_fsm.cpp",
            "Testing/routing_map_guard_test.cpp",
            "Taskfile.yml"
          ],
          "commitId" : "aae9b08b9dbdb9a9bd90b4ee4ad741e8a7c9743b",
          "timestamp" : 1790148755000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复换向点停稳后 Motion 状态机未进入停车态\u000a\u000a车辆停稳且处于换向容差内时，核对历史有效停车终点和当前换向约束，进入 STOP_AUTO 并记录换向停车原因。保留急停、guardian 和其他停车约束的优先级。\u000a\u000a换向约束仍在附近时保持停车，约束解除后恢复自动起步。增加真实 Motion FSM 回归，覆盖两份现场快照距离、停车保持与释放、无效条件以及停车优先级；63 项测试通过，本机 pnc_node 编译通过。\u000a",
          "date" : "2026-09-23 15:32:35 +0800",
          "id" : "aae9b08b9dbdb9a9bd90b4ee4ad741e8a7c9743b",
          "msg" : "fix: 修复换向点停稳后 Motion 状态机未进入停车态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/app/fsm/motion_fsm/motion_fsm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/routing_map_guard_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_lat_plan.hpp",
            "config/config_truck/plan.yaml",
            "tasks/plan/path_optimization_task.hpp",
            "data/config/cfg_lat_plan.cpp",
            "tasks/plan/path_optimization_task.cpp",
            "Testing/wbca_leader_history_test.cpp"
          ],
          "commitId" : "26c340c28d49d096a9032d56d846015b466b2263",
          "timestamp" : 1790149099000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: configure WBCA path length by ego speed\u000a",
          "date" : "2026-09-23 15:38:19 +0800",
          "id" : "26c340c28d49d096a9032d56d846015b466b2263",
          "msg" : "fix: configure WBCA path length by ego speed",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "config/config_truck/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/path_optimization_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/draw/draw_perception.cpp"
          ],
          "commitId" : "de060180d215581d80a2752803d637cf323e3fed",
          "timestamp" : 1790152314000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 在障碍物标注中显示跟踪帧数\u000a\u000a在类型后显示 age 数值，未初始化值显示问号；将车速统一格式化为一位小数，保留旧快照的后续诊断信息。普通及变道不安全障碍物共用显示格式。\u000a\u000a验证：pnc_node、pnc_replayer 编译通过，git diff --check 通过。\u000a",
          "date" : "2026-09-23 16:31:54 +0800",
          "id" : "de060180d215581d80a2752803d637cf323e3fed",
          "msg" : "feat: 在障碍物标注中显示跟踪帧数",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/decision/obstacle_decision.cpp",
            "data/obstacle/decision/obstacle_decision.hpp",
            "data/obstacle/decision/obstacle_decision_test.cpp"
          ],
          "commitId" : "9400659a6fb905588498dc7aa6b40598beb1b89a",
          "timestamp" : 1790165936000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正切入车辆跟车与绕行承诺\u000a\u000a先更新本帧位置再识别切入和通行策略；切入优先解除绕行承诺，普通侧方避让及消抖旧标签不能建立新承诺。\u000a切入完成后保持跟车，退回邻车道后释放跟车锁存。补充左右切入和承诺生命周期回归。\u000a验证：分布式构建通过，polygon_sl_projector_test 共 126 项通过。\u000a",
          "date" : "2026-09-23 20:18:56 +0800",
          "id" : "9400659a6fb905588498dc7aa6b40598beb1b89a",
          "msg" : "fix: 修正切入车辆跟车与绕行承诺",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/boundary/driving_corridor.cpp",
            "data/boundary/driving_corridor_test.cpp"
          ],
          "commitId" : "cd45d025fff50ff766c0a72baf3f156e55b0b84a",
          "timestamp" : 1790165936000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 避免切入收边强迫已越线车辆回归\u000a\u000a移除切入来源侧固定 12 米收边，按实车和有效拼接起点的牵引车及挂车外廓判定越线。\u000a已越线时保留来源侧原道路空间，避免截断向外连续转向；回到车道内后恢复限制。\u000a验证：分布式构建和 126 项决策、边界回归通过，覆盖双侧切入、拼接点、挂车及 DP 采样范围。\u000a",
          "date" : "2026-09-23 20:18:56 +0800",
          "id" : "cd45d025fff50ff766c0a72baf3f156e55b0b84a",
          "msg" : "fix: 避免切入收边强迫已越线车辆回归",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "data/obstacle/obstacle_decider_attr.hpp",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "fcde6e4ee2b22fd71b394e2a366faf60ec065fe9",
          "timestamp" : 1790165936000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 在场景快照中恢复切入跨帧状态\u000a\u000a为切入标志、来源方向及解除计数补充原值 Proto 编解码，Full、Compact 和 Candidate 均恢复。\u000a同步字段合同与生成产物，采用 Proto 默认值，不增加观测有效性兼容状态。\u000a验证：scaffold、generate、check-generated 和 breaking 检查通过，切入编解码及带宽测试通过。\u000a",
          "date" : "2026-09-23 20:18:56 +0800",
          "id" : "fcde6e4ee2b22fd71b394e2a366faf60ec065fe9",
          "msg" : "fix: 在场景快照中恢复切入跨帧状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/common/obstacle_details.hpp",
            "hmi/common/pnc_graphics_view.cpp",
            "hmi/draw/draw_perception.cpp",
            "hmi/widget/pnc_mat.cpp",
            "hmi/common/pnc_graphics_view.hpp",
            "hmi/widget/replayer_pnc_mat.cpp",
            "hmi/draw/draw_perception.hpp",
            "Testing/CMakeLists.txt",
            "Testing/obstacle_detail_render_test.cpp",
            "hmi/node_hmi.cpp",
            "hmi/replayer_hmi.cpp"
          ],
          "commitId" : "581ea80168e914b83207df2d07a1e5913ad2dbce",
          "timestamp" : 1790165937000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 显示障碍物切入状态和中文详细属性\u000a\u000a在实时与回放 HMI 增加详细属性开关，单击障碍物显示位置、策略、承诺及切入生命周期。\u000a切入目标增加橙色方向标注；暂停切换、目标消失及隐藏障碍物时同步更新面板。\u000a验证：实时及回放程序分布式构建通过，HMI 10 项测试通过，2 项可选快照测试跳过。\u000a",
          "date" : "2026-09-23 20:18:57 +0800",
          "id" : "581ea80168e914b83207df2d07a1e5913ad2dbce",
          "msg" : "feat: 显示障碍物切入状态和中文详细属性",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/obstacle_detail_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/replayer_pnc_mat.cpp"
            },
            {
              "editType" : "add",
              "file" : "hmi/common/obstacle_details.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/node_hmi.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "hmi/replayer_hmi.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/pnc_graphics_view.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/pnc_graphics_view.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/pnc_mat.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/encoding_benchmark.cpp"
          ],
          "commitId" : "c17d8ba11638dc92398af030030612ce6f13c89b",
          "timestamp" : 1790166051000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 稳定编码基准的引导线消融默认状态\u000a\u000a消融重置反复创建临时引导线对象，DP 标签未初始化导致 Compact 字节数随机波动。\u000a整体、主备用及嵌套 DP 消融统一复制静态零初始化默认对象，保证同输入重复测量一致。\u000a\u000a验证：分布式增量构建通过；三组回归共 417 项通过、4 项可选快照跳过；重复消融测试连续 10 次通过。\u000a",
          "date" : "2026-09-23 20:20:51 +0800",
          "id" : "c17d8ba11638dc92398af030030612ce6f13c89b",
          "msg" : "fix: 稳定编码基准的引导线消融默认状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/lat_decider/switching_bounds_decider.cpp",
            "data/obstacle/cluster_lane_change_safety_test.cpp",
            "data/plan/switch_data.cpp"
          ],
          "commitId" : "440615906e0c9528d2857a14d6f758cea98c451d",
          "timestamp" : 1790180724000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 将变道距离锁存推迟到进入变道状态\u000a\u000a准备阶段按最新速度更新完成距离，进入 SWITCHING 时确定距离和起终点，持续变道时继承锁存几何，避免减速后仍沿用高速边界。\u000a\u000a历史候选失效时清除未锁存几何，边界兜底同步更新安全检查距离；补充减速、状态切换、候选失效和重置回归。分布式编译及 19 项相关测试通过。\u000a",
          "date" : "2026-09-24 00:25:24 +0800",
          "id" : "440615906e0c9528d2857a14d6f758cea98c451d",
          "msg" : "fix: 将变道距离锁存推迟到进入变道状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/lat_decider/switching_bounds_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_lane_change_safety_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "data/plan/switch_data.cpp",
            "data/config/cfg_lat_decide.cpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "config/config_imv/plan.yaml",
            "data/config/cfg_lat_decide.hpp",
            "config/config_truck/plan.yaml",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "data/obstacle/cluster_lane_change_safety_test.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "config/config_car/plan.yaml",
            "config/config_truck/config_truck_reverse/plan.yaml",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "f6e9beb190e8b47a0160ccfa3511da7c45149e3e",
          "timestamp" : 1790181868000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持普通变道到最外侧车道的独立速度配置\u000a\u000a根据 mlt_center_lines 的目标索引是否为最后一条车道选择 switch_in_normal_outermost_km_h，未配置时继承 switch_in_normal_km_h，并同步普通路口变道准备距离计算。\u000a\u000a补齐 Full/Compact/Candidate typed 配置及旧消息缺字段回退，新增速度选择、边界和回放兼容回归。合同生成与兼容检查通过，分布式编译通过；22 项变道测试通过，回放测试 285 项通过、2 项因缺少外部数据跳过。\u000a",
          "date" : "2026-09-24 00:44:28 +0800",
          "id" : "f6e9beb190e8b47a0160ccfa3511da7c45149e3e",
          "msg" : "feat: 支持普通变道到最外侧车道的独立速度配置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "config/config_imv/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_lane_change_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_decide.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/config_truck_reverse/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "config/config_car/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_decide.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/long_target_activation_test.cpp",
            "Testing/CMakeLists.txt",
            "data/constrain/long_target.cpp"
          ],
          "commitId" : "acb9f2343e96a0264c62697bdfa04d461ea8bb39",
          "timestamp" : 1790182202000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 避免巡航负加速度误激活远端停车\u000a\u000a停车激活评估不再把普通负加速度视为已进入终点制动，保留候选起点 v/a、硬制动可达性和已激活停车的连续性。\u000a\u000a补充现场 bag 参数、连续重规划、目标移远、约束消失及近距离硬制动回归。\u000a",
          "date" : "2026-09-24 00:50:02 +0800",
          "id" : "acb9f2343e96a0264c62697bdfa04d461ea8bb39",
          "msg" : "fix: 避免巡航负加速度误激活远端停车",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/long_target_activation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/long_target.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/lattice/lattice_trajectory1d.cpp",
            "math/curve1d/curve1d.hpp",
            "algorithm/plan/lattice.cpp",
            "math/piecewise_jerk/piecewise_jerk_traj.cpp",
            "Testing/longitudinal_curve_validation_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/lattice/longitudinal_curve_validator.hpp",
            "data/lattice/lattice_trajectory1d.hpp",
            "math/piecewise_jerk/piecewise_jerk_traj.hpp",
            "Testing/CMakeLists.txt",
            "Testing/jerk_limited_stop_test.cpp"
          ],
          "commitId" : "8fd5a80b8aae60764c9d37775d6826ab6cb4c672",
          "timestamp" : 1790182204000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 解析校验长时域停车曲线以避免候选误拒绝\u000a\u000a分段常 jerk 曲线检查完整时域端点、内部速度极值和分段边界，支持历史时间重基与终点保持；未知曲线继续保留采样预算保护。\u000a\u000a补充远端停车及低速恢复回归，并在规划失败日志中输出首个前置候选拒绝原因。刷新本次头文件变化对应的审计哈希，不改变持久化字段。\u000a",
          "date" : "2026-09-24 00:50:04 +0800",
          "id" : "8fd5a80b8aae60764c9d37775d6826ab6cb4c672",
          "msg" : "fix: 解析校验长时域停车曲线以避免候选误拒绝",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/plan/lattice.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/lattice_trajectory1d.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/piecewise_jerk/piecewise_jerk_traj.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/longitudinal_curve_validation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/longitudinal_curve_validator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/piecewise_jerk/piecewise_jerk_traj.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/lattice_trajectory1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/common/trajectory_point.cpp",
            "Testing/trajectory_point_interpolation_test.cpp",
            "Testing/CMakeLists.txt"
          ],
          "commitId" : "4470e60a991e108dc7e0629c4f1653e242a1f754",
          "timestamp" : 1790182204000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按时间插值消除低速轨迹起点锁存\u000a\u000a时间匹配直接按时间比例插值，避免亚毫米制动轨迹被 1 cm 空间容差或 1 ms 时间容差截断；保留角度和 z 哨兵语义。\u000a\u000a新增低速、静止、亚毫秒、分段端点和重复时间回归。三个修复合并验证：99 项纵向规划测试通过，pnc_node 分布式构建通过。\u000a",
          "date" : "2026-09-24 00:50:04 +0800",
          "id" : "4470e60a991e108dc7e0629c4f1653e242a1f754",
          "msg" : "fix: 按时间插值消除低速轨迹起点锁存",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/trajectory_point_interpolation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/common/trajectory_point.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "replayer/algorithm_replay/production_variant_runner.cpp",
            "replayer/replayer_data_process/replayer_data_process.hpp",
            "Testing/scene_replay_foundation_test.cpp"
          ],
          "commitId" : "c463af0de6aa16dc8cb5d1088faaa3fc18bf8935",
          "timestamp" : 1790182321000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 恢复回放帧配置并保护共享配置访问\u000a\u000a逐帧同步 WBCA 等生产算法读取的配置单例，避免离线默认零速度覆盖录制配置。\u000a回放重建与任务执行共用递归互斥锁，防止并发回放互相覆盖配置。\u000a补充连续帧限速和相关配置恢复回归测试。\u000a",
          "date" : "2026-09-24 00:52:01 +0800",
          "id" : "c463af0de6aa16dc8cb5d1088faaa3fc18bf8935",
          "msg" : "fix: 恢复回放帧配置并保护共享配置访问",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/algorithm_replay/production_variant_runner.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/dp_poly_path/trajectory_cost.hpp",
            "data/boundary/driving_corridor.cpp",
            "data/constrain/longitude_constrain.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/dp_poly_path/trajectory_cost.cpp",
            "data/boundary/driving_corridor_test.cpp",
            "data/boundary/driving_corridor.hpp",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "data/dp_poly_path/dp_road_graph.cpp",
            "data/obstacle/decision/obstacle_decision.hpp",
            "data/obstacle/decision/obstacle_decision.cpp",
            "replayer/scene_data/plan_frame_nested_persistence_review.yaml",
            "Testing/compact_driving_corridor_restore_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/obstacle/obstacle_decider_attr.cpp",
            "data/dp_poly_path/trajectory_cost_test.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "data/obstacle/obstacle_decider_attr.hpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "4b28b4a4fa1c8cdaccdc57a377777622248da7c3",
          "timestamp" : 1790182338000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 提前准备会车右让空间并补齐预测尾点检查\u000a\u000a会车预判覆盖纵向规划时域并检查真实预测尾点，自车与障碍物按同一时刻评估。\u000a提前生成右让准备段，考虑实车及有效拼接车身占用，保留可行通道和车身保护。\u000a按目标记录边界贡献，切入或换侧时撤销失效贡献并迁移代表位置，缺失保持迟滞。\u000a持久化会车确认状态，完善 Full、Compact、Candidate 及边界与动态代价回归。\u000a\u000a验证：分布式构建节点、回放器和测试目标；440 项常规测试通过；合同生成与兼容检查通过。\u000a两份 bag 重建完成，提前右让时机未退后；新增尾点碰撞使部分录制状态帧无解，尚未完成闭环连续通过验收。\u000a",
          "date" : "2026-09-24 00:52:18 +0800",
          "id" : "4b28b4a4fa1c8cdaccdc57a377777622248da7c3",
          "msg" : "fix: 提前准备会车右让空间并补齐预测尾点检查",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_nested_persistence_review.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/trajectory_cost_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/dp_road_graph.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/longitude_constrain.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/trajectory_cost.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/trajectory_cost.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_path_corridor_test.cpp",
            "tasks/plan/keb_utils.cpp",
            "scenarios/task_condition_evaluator.cpp",
            "tasks/plan/keb_utils.hpp"
          ],
          "commitId" : "ebf79838cebf70c654ad674503a1cedbe50bb8c0",
          "timestamp" : 1790185524000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按任务终点与路口中点选择堆场规划器\u000a\u000a使用当前行驶段剩余距离判断任务终点是否越过进出场路口中点，避免延长引导线和区域提前判定误触发 KEB。终点在中点或之前时按已开启的堆场 PJPO 开关选择 PJPO，超过中点时保留 KEB。\u000a\u000a选择器与 KEB 目标构造共用终点检查，保留缺输入报错及带缓存路口的尾段复用。补充中点边界、规划器切换、换向段终点、无效输入与连续路口回归。分布式编译及 19 项相关测试通过。\u000a",
          "date" : "2026-09-24 01:45:24 +0800",
          "id" : "ebf79838cebf70c654ad674503a1cedbe50bb8c0",
          "msg" : "fix: 按任务终点与路口中点选择堆场规划器",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "scenarios/task_condition_evaluator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_env_const.hpp",
            "math/filter/median_filter.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/config/cfg_env_const.cpp",
            "CMakeLists.txt",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "data/constrain/temporary_stop_data.cpp",
            "tools/pnc_proto_mapper/audit_full_custom_codecs.py",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "proto/decision.proto",
            "data/constrain/temporary_stop_data.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "data/constrain/block_data.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "Testing/disable_stop_regression_test.cpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "data/constrain/disable_stop_range.cpp",
            "data/constrain/disable_stop_range.hpp",
            "replayer/scene_data/config_proto_codec.hpp",
            "replayer/scene_data/plan_frame_nested_persistence_review.yaml",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "Testing/disable_stop_queue_test.cpp",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "data/constrain/disable_stop_queue.hpp",
            "data/constrain/block_data.hpp",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "70146373ee82184f8d33a368003d6fc2f3c8eb94",
          "timestamp" : 1790220559000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 合入禁停队列预测并修正整车范围与缓存退出\u000a\u000a仅合入 6055d1444943aeae3754e02473b6ba418b9ab5cb，保留当前分支的信号灯禁停策略和 can_jump 语义。\u000a\u000a路口与普通禁停区已扩展整车长度，预测匹配避免重复计入；岸桥保留挂车占用判断。通过点锚点缺失时按累计位移推进缓存，并在整段通过后退出。修复连续过期条目清理的迭代器失效。\u000a\u000a按帧复用队列预测结果，保持原前车选择与预测参数；删除 use_func_disable_stop_debug_ 参数及专用日志。\u000a\u000a为新增预测、滤波窗口、保持状态、路口缓存和入口偏移补齐 typed Full/Compact 合同及回放测试；统一显式空 Full codec 的生成与审计语义。\u000a\u000a验证：分布式构建 pnc_node 和两个测试目标成功；routing_map_guard 78 项通过，scene_replay_foundation 288 项通过、2 项因缺可选样本跳过；其中 3 项本地服务测试解除端口沙箱限制后重跑通过。生成检查、Proto breaking 检查和持久化目录检查通过。\u000a",
          "date" : "2026-09-24 11:29:19 +0800",
          "id" : "70146373ee82184f8d33a368003d6fc2f3c8eb94",
          "msg" : "fix: 合入禁停队列预测并修正整车范围与缓存退出",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_env_const.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/disable_stop_queue_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_nested_persistence_review.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/decision.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "add",
              "file" : "data/constrain/disable_stop_queue.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/audit_full_custom_codecs.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/filter/median_filter.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/disable_stop_regression_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_env_const.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/proto_generation.md",
            "AGENTS.md",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
          ],
          "commitId" : "344373f6f048c4464359e98d3c30ed0af1229ce2",
          "timestamp" : 1790221008000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 补充多分支 Proto 兼容与发布规范\u000a\u000a明确固定 baseline 检查无法覆盖并行分支冲突，要求统一核对字段编号、对活跃发布版本检查描述符及双向读写，并记录发布物合同。将流程提醒加入 AGENTS.md，供后续代码修改遵循。\u000a",
          "date" : "2026-09-24 11:36:48 +0800",
          "id" : "344373f6f048c4464359e98d3c30ed0af1229ce2",
          "msg" : "docs: 补充多分支 Proto 兼容与发布规范",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/proto_generation.md"
            },
            {
              "editType" : "edit",
              "file" : "AGENTS.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/cluster_lane_change_safety_test.cpp"
          ],
          "commitId" : "de3f72d5741168549187d530d99818f0700baae7",
          "timestamp" : 1790250243000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 适配临时停车范围的障碍物参数\u000a\u000a为凸包换道安全测试补齐 AddDisableRange 新增的障碍物映射参数，恢复测试目标编译。\u000a",
          "date" : "2026-09-24 19:44:03 +0800",
          "id" : "de3f72d5741168549187d530d99818f0700baae7",
          "msg" : "test: 适配临时停车范围的障碍物参数",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_lane_change_safety_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/boundary/driving_corridor.cpp",
            "data/boundary/driving_corridor_test.cpp"
          ],
          "commitId" : "67d43604b8c435034219db009741feec09406e3d",
          "timestamp" : 1790250243000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 避免会车准备段过度收缩绕行空间\u000a\u000a会车近侧目标保持在统一 SL 坐标系，移除按源段与当地安全右界差值平移目标的逻辑，避免将远处静态障碍缺口扩大到上游。保留源段可行性和当地完整车宽保护，并补充障碍缺口与借道宽度变化回归。\u000a",
          "date" : "2026-09-24 19:44:03 +0800",
          "id" : "67d43604b8c435034219db009741feec09406e3d",
          "msg" : "fix: 避免会车准备段过度收缩绕行空间",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "data/obstacle/obstacle.hpp",
            "tools/pnc_proto_mapper/sync_container_schema.py",
            "data/obstacle/decision/obstacle_decision.hpp",
            "data/obstacle/decision/obstacle_decision.cpp",
            "Testing/compact_driving_corridor_restore_test.cpp",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "tools/pnc_proto_mapper/test_container_schema_registration.py",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "3673d874187d6c64feb572f3f1d9755df30c1caa",
          "timestamp" : 1790250262000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留静止障碍物短时漏检后的绕行确认依据\u000a\u000a保存最长 0.5 秒的同 ID 静止确认依据，恢复前核对类型、跟踪年龄、位置、尺寸及原始和滤波运动证据。仅恢复确认计数，绕行策略与承诺仍按当前场景计算，避免 OBJ 与凸包反复切换造成重复等待。\u000a\u000a在 feat_proto_jinxi 登记 ObstaclesProto 字段 8，同步 Full、Compact 和 Candidate 编解码及缺字段默认行为，修复旧容器清单覆盖新字段登记的问题。新增生命周期、运动否决、合同兼容与带宽回归。\u000a\u000a验证：分布式构建 pnc_node、pnc_replayer 及测试目标通过；162 项决策与走廊测试、290 项回放测试通过。453 场景 90 帧回放验证第 41、65、74 帧恢复即允许绕行，初次检测仍等待确认；合同生成及兼容检查通过。\u000a",
          "date" : "2026-09-24 19:44:22 +0800",
          "id" : "3673d874187d6c64feb572f3f1d9755df30c1caa",
          "msg" : "fix: 保留静止障碍物短时漏检后的绕行确认依据",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_container_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_container_schema_registration.py"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/CMakeLists.txt",
            "Testing/task_align_terminal_stop_test.cpp",
            "data/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp"
          ],
          "commitId" : "e146a0387c90cd0e721513f101f7f0fb507312e6",
          "timestamp" : 1790572026000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复一次对准终点停车后未进入锁定状态\u000a\u000a允许车辆已静止且因绝对终点停车进入 STOP_CTRL 时，在正向偏差不超过停车线接管阈值的情况下进入 ALIGN_LOCK，避免约 2 cm 剩余偏差使任务停留在 ALIGN_1ST。保留原有负偏差转换行为，并补充距离边界、静止条件和停车原因回归测试。\u000a",
          "date" : "2026-09-28 13:07:06 +0800",
          "id" : "e146a0387c90cd0e721513f101f7f0fb507312e6",
          "msg" : "fix: 修复一次对准终点停车后未进入锁定状态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/task_align_terminal_stop_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/path_optimization/truck_path_optimization.hpp",
            "Testing/fixtures/wbca_truck_collision_gradient_7.csv",
            "algorithm/wbca/path_optimization/path_optimization.hpp",
            "Testing/fixtures/wbca_truck_collision_gradient_8.csv",
            "algorithm/wbca/path_optimization/path_optimization.cpp",
            "algorithm/wbca/path_optimization/truck_path_optimization.cpp",
            "Testing/wbca_failure_csv_test.cpp",
            "docs/platoon/wbca_failure_replay.md"
          ],
          "commitId" : "0cdb4d93c35b8ff0cf7cdd2ba49d8be835409ca0",
          "timestamp" : 1790581320000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(wbca): correct collision and distance cost gradients\u000a",
          "date" : "2026-09-28 15:42:00 +0800",
          "id" : "0cdb4d93c35b8ff0cf7cdd2ba49d8be835409ca0",
          "msg" : "fix(wbca): correct collision and distance cost gradients",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_failure_replay.md"
            },
            {
              "editType" : "add",
              "file" : "Testing/fixtures/wbca_truck_collision_gradient_7.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/fixtures/wbca_truck_collision_gradient_8.csv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "offboard/keb_vis_server/test_heading_diagnostics.js",
            "data/config/cfg_hmi_layer_mapping.yaml",
            "offboard/keb_vis_server/keb_vis_html_template.cc",
            "replayer/scene_data/hmi_layer_manifest.yaml",
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "hmi/widget/pnc_mat_shared.cpp",
            "replayer/scene_data/generated/hmi_layer_catalog.cpp",
            "hmi/draw/draw_all.cpp",
            "ssep/offboard/servers/test_heading_diagnostics.js",
            "hmi/draw/draw_keb_debug.hpp",
            "hmi/draw/keb_heading_deviation.hpp",
            "hmi/draw/draw_keb_debug.cpp",
            "Testing/CMakeLists.txt",
            "Testing/keb_heading_deviation_test.cpp"
          ],
          "commitId" : "1e690475945ef9fb1b162332ff6e4d6e221df555",
          "timestamp" : 1790585514000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 为 KEB 可视化标注最大航向偏差\u000a\u000a在 HMI 的 SSEP/实时 KEB、独立 KEB 网页和场景网页中标注车头与挂车最大角差点、车框、点序号和角度。\u000a按到达方向处理倒车和换向，使用挂车后轴几何；缺挡位时明确采用轴线差，IMV 按 beta 可用性标注。\u000a补充 C++/JavaScript 回归和 HMI 图层登记，覆盖首点未知方向、换向后最大点、零值字段及退化路径。\u000a",
          "date" : "2026-09-28 16:51:54 +0800",
          "id" : "1e690475945ef9fb1b162332ff6e4d6e221df555",
          "msg" : "feat: 为 KEB 可视化标注最大航向偏差",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/hmi_layer_manifest.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_hmi_layer_mapping.yaml"
            },
            {
              "editType" : "add",
              "file" : "hmi/draw/keb_heading_deviation.hpp"
            },
            {
              "editType" : "add",
              "file" : "offboard/keb_vis_server/test_heading_diagnostics.js"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_keb_debug.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/hmi_layer_catalog.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/keb_heading_deviation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_all.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_keb_debug.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/widget/pnc_mat_shared.cpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/keb_vis_server/keb_vis_html_template.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/servers/test_heading_diagnostics.js"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/servers/scene_vis_html_template.cc"
          ],
          "commitId" : "ef78186a4b5cda1ac989eb14077fc05504d3bdf4",
          "timestamp" : 1790585525000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 为场景网页增加搜索起终点车框开关\u000a\u000a在图例中分别控制搜索起点和终点的车头框、挂车框及位置标记，默认保持显示。\u000a兼容 Proto JSON 省略的零值坐标和朝向；已通过浏览器独立隐藏与恢复验证。\u000a",
          "date" : "2026-09-28 16:52:05 +0800",
          "id" : "ef78186a4b5cda1ac989eb14077fc05504d3bdf4",
          "msg" : "feat: 为场景网页增加搜索起终点车框开关",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/path_optimization/path_optimization.cpp",
            "algorithm/wbca/path_optimization/truck_path_optimization.hpp",
            "Testing/CMakeLists.txt",
            "algorithm/wbca/path_optimization/truck_path_optimization.cpp",
            "Testing/wbca_cost_gradient_test.cpp",
            "algorithm/wbca/path_optimization/path_optimization.hpp"
          ],
          "commitId" : "220cf88ad8837fbca150f5f48ac4f59217bfea82",
          "timestamp" : 1790588982000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(wbca): correct path cost gradients\u000a\u000aDifferentiate trailer collision costs through the discrete integration across samples and segment durations. Correct the tractor collision Jacobian transpose and the initial-sample minimum-distance gradient.\u000a\u000aAdd a standalone finite-difference regression target covering forward and reverse coefficients and durations.\u000a",
          "date" : "2026-09-28 17:49:42 +0800",
          "id" : "220cf88ad8837fbca150f5f48ac4f59217bfea82",
          "msg" : "fix(wbca): correct path cost gradients",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/wbca_cost_gradient_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/path_optimization.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/truck_path_optimization.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc",
            "ssep/scenarios/truck_multi_seg_general_planner.h",
            "ssep/test/coarse_search_stop_clearance_test.cc",
            "ssep/coarse_search/searcher_builders/imv_bidirectional_searcher_builder.h",
            "ssep/test/gpu_collision_disk_packing_test.cc",
            "ssep/scenarios/imv_exit_parking_spot_planner.h",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/coarse_search/searcher_builders/truck_reference_following_searcher_builder.cc",
            "ssep/test/keb_normal_extension_test.cc",
            "ssep/scenarios/imv_enter_yard_planner.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc",
            "data/config/cfg_lat_plan.cpp",
            "ssep/test/bidirectional_stop_collision_test.cc",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "ssep/coarse_search/evaluator/trailer_collision_cost_computer.h",
            "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.cc",
            "ssep/keb_optimizer/imv_keb_optimizer.h",
            "ssep/test/gpu_collision_test.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_lane_change_searcher_builder.cc",
            "ssep/scenarios/truck_general_planner.h",
            "ssep/coarse_search/gpu_context.cc",
            "tasks/plan/keb_utils_core.hpp",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "ssep/coarse_search/searcher_builders/tractor_trailer_lane_change_searcher_builder.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h",
            "ssep/scenarios/straddle_carrier_pick_vehicle_planner.h",
            "ssep/keb_optimizer/rigid_truck_keb_optimizer.h",
            "ssep/test/CMakeLists.txt",
            "tasks/plan/keb_path_optimize_task.cpp",
            "ssep/coarse_search/gpu_collision_disk_packing.h",
            "ssep/coarse_search/geometric_searcher/bulk_yard_geometric_searcher.cc",
            "ssep/scenarios/two_stage_planner_composer.h",
            "data/config/cfg_lat_plan.hpp",
            "ssep/scenarios/imv_enter_station_planner.h",
            "ssep/scenarios/tractor_trailer_enter_parking_spot_planner.h",
            "ssep/scenarios/forward_collision_check_params.h",
            "ssep/keb_optimizer/keb_utils.h",
            "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.h",
            "ssep/coarse_search/gpu_context.h",
            "ssep/coarse_search/searcher_builders/imv_bidirectional_searcher_builder.cc",
            "ssep/coarse_search/evaluator/evaluator.h",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "ssep/coarse_search/searcher_builders/truck_multi_segment_parking_bidirectional_searcher_builder.h",
            "ssep/keb_optimizer/rigid_truck_keb_optimizer.cc",
            "ssep/scenarios/tractor_trailer_enter_yard_planner.h",
            "ssep/scenarios/truck_fuzzy_reversing_planner.h",
            "ssep/keb_optimizer/imv_keb_optimizer.cc",
            "ssep/coarse_search/evaluator/gpu_collision_cost_computer.cc",
            "ssep/gpu/device_types.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h",
            "ssep/scenarios/straddle_carrier_general_planner.h",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc",
            "ssep/scenarios/stitching_replanner.h",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "docs/ssep_stop_collision_extension.md",
            "ssep/scenarios/truck_bulk_yark_in_out_planner.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/scenarios/truck_remote_guided_escape_planner.h",
            "ssep/test/keb_stop_collision_test.cc",
            "ssep/coarse_search/searcher_builders/bulk_yard_in_out_path_searcher_builder.h",
            "ssep/coarse_search/searcher_builders/truck_reference_following_searcher_builder.h",
            "ssep/coarse_search/evaluator/collision_cost_computer.h",
            "ssep/scenarios/scenario_planner_interface.h",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/scenarios/legacy_planner.h",
            "ssep/coarse_search/searcher_builders/truck_multi_segment_parking_bidirectional_searcher_builder.cc",
            "replayer/scene_data/config_proto_codec.cpp",
            "ssep/coarse_search/evaluator/forward_collision_check_lengths.h",
            "ssep/scenarios/truck_accurate_reversing_planner.cc",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc",
            "ssep/ssep_planner.cc",
            "ssep/scenarios/imv_pullover_planner.h",
            "tasks/plan/keb_lane_follow_path_task.cpp",
            "ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.h",
            "Testing/keb_roadside_config_test.cpp",
            "ssep/keb_optimizer/README.md",
            "tasks/plan/keb_utils_core.cpp",
            "ssep/coarse_search/motion_primitive_sampler/reverse_primitive_decorator.h",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "ssep/coarse_search/motion_primitive.h",
            "ssep/scenarios/imv_general_planner.h",
            "ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.h",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "ssep/scenarios/truck_u_turn_planner.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/scenarios/imv_multi_segment_parking_planner.h",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "ssep/coarse_search/motion_primitive_sampler/dir_change_path_extention_decorator.h",
            "ssep/scenarios/truck_multi_segment_parking_planner.h",
            "ssep/coarse_search/searcher_builders/bulk_yard_in_out_path_searcher_builder.cc",
            "ssep/gpu/collision/collision_checker.cuh",
            "proto/config.proto",
            "ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.cc",
            "ssep/scenarios/tractor_trailer_general_planner.h",
            "ssep/scenarios/tractor_trailer_short_distance_planner.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "Testing/keb_gate_filter_test.cpp",
            "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.h",
            "ssep/scenarios/tractor_trailer_lane_change_planner.h",
            "ssep/test/ssep_planner_test.cc",
            "ssep/keb_optimizer/keb_utils.cc",
            "ssep/test/forward_collision_check_params_test.cc",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h",
            "ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.cc"
          ],
          "commitId" : "7e0f45d37fb930216c00fea5b70932253bc88d4d",
          "timestamp" : 1790599005000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 区分普通点与停车点的前向碰撞检查长度\u000a\u000a为 SSEP 粗搜索、搜索后 KEB 和实时 KEB 分别配置普通点及换向/终点的前向额外长度，停车包络按驶入方向选择，并保留既有场景豁免行为。\u000a\u000a补齐场景参数传播与实时配置回放合同，保留旧消息默认值及显式零值。修复 GPU 圆盘容量越界、长路径尾部截断和 KEB 非法几何/数量转换，拒绝无效参数而不缩小检测范围。\u000a\u000a最终工作树验证：SSEP 229 项测试、6 例场景回归通过；RTX 4060 上 10 项 GPU 测试通过，Compute Sanitizer memcheck 报告 0 errors；主工程及实时配置入口测试通过。\u000a",
          "date" : "2026-09-28 20:36:45 +0800",
          "id" : "7e0f45d37fb930216c00fea5b70932253bc88d4d",
          "msg" : "feat: 区分普通点与停车点的前向碰撞检查长度",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_enter_yard_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_lane_follow_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_utils.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/forward_collision_check_params.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/gpu_collision_disk_packing.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_enter_yard_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/straddle_carrier_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/evaluator.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_multi_segment_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/coarse_search/evaluator/forward_collision_check_lengths.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_lane_change_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/coarse_search_stop_clearance_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/reverse_primitive_decorator.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/gpu_collision_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/keb_gate_filter_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_enter_station_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/bulk_yard_in_out_path_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_enter_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/collision_cost_computer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_general_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/gpu_collision_cost_computer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/legacy_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/gpu_context.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/rigid_truck_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/truck_reference_following_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/dir_change_path_extention_decorator.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/truck_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/gpu/device_types.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/gpu_collision_disk_packing_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/straddle_carrier_pick_vehicle_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_short_distance_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/geometric_searcher/bulk_yard_geometric_searcher.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_lane_change_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/gpu/collision/collision_checker.cuh"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_stop_collision_extension.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_fuzzy_reversing_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_single_segment_parking_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_bulk_yark_in_out_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/two_stage_planner_composer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_accurate_reversing_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/gpu_context.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/rigid_truck_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/keb_roadside_config_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_u_turn_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/truck_reference_following_searcher_builder.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/bidirectional_stop_collision_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/imv_pullover_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_remote_guided_escape_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/forward_collision_check_params_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/imv_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/truck_multi_seg_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_utils.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/truck_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/bulk_yard_in_out_path_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_lane_change_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_collision_cost_computer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils_core.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_interface.h"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_path_optimize_task.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/keb_stop_collision_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/keb_normal_extension_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/forward_precise_planner_test.cc",
            "ssep/test/CMakeLists.txt",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h",
            "data/ssep/forward_ec.cpp",
            "ssep/scenarios/tractor_trailer_general_planner.h",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/test/keb_stop_collision_test.cc",
            "ssep/test/forward_precise_routing_test.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc",
            "docs/ssep_forward_precise_arrival.md",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/ssep_planner.cc",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "680f27a422524859d41d0c66d9c02a2c36d2e9a0",
          "timestamp" : 1790599031000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持拖挂车单向精确到达与可配置末端直线\u000a\u000a在 TractorTrailerGeneral 中新增可选 ForwardPrecise 策略，沿用单向前进搜索，固定默认 3 m 的可配置尾段并校验精确终点位姿、运动学与连续车身扫掠。\u000a\u000a增加尾段碰撞忽略开关，保留入口与此前路径检查；禁止路径库或历史拼接绕过精确到达约束。实时场景每帧保留显式尾段配置，退出策略后恢复动态距离。\u000a\u000a补充策略、固定尾段、碰撞忽略与配置生命周期回归。津西记录验证终点 x/y、车头与挂车航向误差均为 0，完整 3 m 直线保留，独立扫掠无碰撞。\u000a",
          "date" : "2026-09-28 20:37:11 +0800",
          "id" : "680f27a422524859d41d0c66d9c02a2c36d2e9a0",
          "msg" : "feat: 支持拖挂车单向精确到达与可配置末端直线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/forward_precise_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/forward_precise_routing_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/keb_stop_collision_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_forward_precise_arrival.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_tables_batch.py",
            "ssep/test/gpu_collision_test_kernel.cu",
            "ssep/coarse_search/motion_primitive_sampler/multi_curvature_motion_primitive_sampler.cc",
            "ssep/coarse_search/evaluator/trailer_heuristic_metadata.h",
            "ssep/gpu/samplers/multi_curvature_sampler.cuh",
            "ssep/offboard/path_drawing_tool/hermite_path_generator.cc",
            "ssep/coarse_search/motion_primitive_sampler/trailer_heading_motion_primitive_decorator.h",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/README.md",
            "ssep/param_loader/param.h",
            "ssep/test/gpu_collision_test.cc",
            "ssep/keb_optimizer/keb_utils.cc",
            "ssep/data_structures/type_definition.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/test/gpu_collision_test_kernel.cuh",
            "ssep/test/trailer_heuristic_table_test.cc",
            "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h",
            "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc",
            "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.cc",
            "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_generate_tables_batch.py",
            "ssep/gpu/collision/collision_checker.cuh",
            "ssep/data_structures/path_utils.h"
          ],
          "commitId" : "fe6ed2265341e86db3400f32d2baa5bab7bab42c",
          "timestamp" : 1790608554000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一拖挂车前置铰接点的运动学与碰撞模型\u000a\u000a按铰接点位于后轴前方为正的定义，将 CPU/GPU 搜索、KEB 约束与验收、\u000a路径递推统一为 +h，修正 GPU 碰撞几何并将启发式生成器版本升级为 g2。\u000a补充独立轴心无侧滑、CPU/GPU 一致性及旧模型表拒绝测试。\u000a\u000a验证：CPU 单测和启发表脚本通过；GPU +h 版本此前 12 项及 memcheck 通过。\u000a原预算下 16:08:56 和旧 05:43:31 搜索失败仍保留，未放宽安全验收。\u000a",
          "date" : "2026-09-28 23:15:54 +0800",
          "id" : "fe6ed2265341e86db3400f32d2baa5bab7bab42c",
          "msg" : "fix: 统一拖挂车前置铰接点的运动学与碰撞模型",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/test_generate_tables_batch.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/gpu_collision_test_kernel.cuh"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/trailer_heuristic_table_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/gpu/samplers/multi_curvature_sampler.cuh"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/gpu_collision_test_kernel.cu"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_utils.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/path_drawing_tool/hermite_path_generator.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/trailer_heading_motion_primitive_decorator.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/gpu/collision/collision_checker.cuh"
            },
            {
              "editType" : "edit",
              "file" : "ssep/param_loader/param.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/tractor_trailer_shortest_path_heuristic_generator/generate_tables_batch.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_heuristic_metadata.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/multi_curvature_motion_primitive_sampler.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/path_utils.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/type_definition.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/gpu_collision_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "dabfb7aea639e328d03c840c56ff0a2f4e903c42",
          "timestamp" : 1790608563000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补齐固定尾段入口的三点曲率约束\u000a\u000a将三点中心覆盖到固定尾段入口，保留左侧可变点对连接曲率的约束。\u000a检查右邻点存在，跳过真实换向和全固定三元组；新增入口、换向、\u000a全固定及普通末端边界测试，不改变最终下发曲率验收。\u000a\u000a验证：运动学与权重 75 项、规划 230 项测试通过。\u000a",
          "date" : "2026-09-28 23:16:03 +0800",
          "id" : "dabfb7aea639e328d03c840c56ff0a2f4e903c42",
          "msg" : "fix: 补齐固定尾段入口的三点曲率约束",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_heading_quality.json",
            "ssep/test/local_regression/tt_heading_cases.json",
            "ssep/test/local_regression/tt_heading_quality.py",
            "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h",
            "ssep/test/local_regression/README.md",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/test_tt_heading_quality.py",
            "docs/ssep_hitch_model_validation.md",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc",
            "ssep/test/local_regression/tt_heading_manifest.tsv"
          ],
          "commitId" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
          "timestamp" : 1790608586000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 收录津西航向偏差场景并补充挂车几何诊断\u000a\u000a归档 10 份原始场景，提交相对路径、来源和 SHA-256；保留原始参数和预算。\u000a新增非等距点切向统计及输入有效性测试，角度只观察，不添加拒绝门槛。\u000a补充挂车轴心弦向诊断及失败边日志，记录实验性细化撤回依据和剩余问题。\u000a\u000a撤回未提交的场景归一化、新软约束和多组合重试，保持原三次细化策略。\u000a验证：新集 9/10、旧 TT 3/4、IMV 2/2；312 项 C++ 与 38 项相关 Python\u000a测试通过，pnc_node 编译通过。失败保留为已知问题，不跳过或扩大预算。\u000a",
          "date" : "2026-09-28 23:16:26 +0800",
          "id" : "a9134bdaec29e5e572101316101ffe33eb3ab13a",
          "msg" : "test: 收录津西航向偏差场景并补充挂车几何诊断",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_tt_heading_quality.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_hitch_model_validation.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_heading_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_heading_cases.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_diagnostics_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_heading_quality.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_heading_manifest.tsv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/common/utils/common.hpp",
            "ssep/test/local_regression/test_parking_geometric_curvature.py",
            "ssep/ssep_planner.cc",
            "ssep/test/local_regression/tt_parking_quality.py",
            "ssep/test/consistent_path_profile_test.cc",
            "ssep/common/utils/plotter.hpp"
          ],
          "commitId" : "20c61e00477176af12569a9d0937f5186ece1b4d",
          "timestamp" : 1790632892000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正路径曲率与轮角导出的一致性\u000a\u000a使用有向三点圆曲率及有效弧长中心插值，消除端点半曲率与加密后导数伪差。\u000a保留入段换向控制语义，拒绝退化或非有限几何，并向调用方传播轮角计算失败。\u000a同步停车质量检查，补充非等距圆弧、变化曲率及退化输入测试。\u000a",
          "date" : "2026-09-29 06:01:32 +0800",
          "id" : "20c61e00477176af12569a9d0937f5186ece1b4d",
          "msg" : "fix: 修正路径曲率与轮角导出的一致性",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/common/utils/common.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_parking_quality.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_parking_geometric_curvature.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/common/utils/plotter.hpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/consistent_path_profile_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_heading_cases.json",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/tt_heading_manifest.tsv"
          ],
          "commitId" : "a821300c7f7c3cfef26fa2c9e4416b1b70a096d2",
          "timestamp" : 1790632901000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 补充三份津西拖挂航向偏差回归记录\u000a\u000a将 23:46:31、23:49:23、23:51:37 三份原始记录加入清单，固定来源、大小及 SHA-256。\u000a观察集扩至 13 例，保留原输入和预算；注明历史失败与当前验收的区别。\u000a",
          "date" : "2026-09-29 06:01:41 +0800",
          "id" : "a821300c7f7c3cfef26fa2c9e4416b1b70a096d2",
          "msg" : "test: 补充三份津西拖挂航向偏差回归记录",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_heading_cases.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_heading_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/keb_optimizer/control_space_path_adapter.cc",
            "ssep/test/continuous_path_sampling_test.cc",
            "ssep/test/control_space_refiner_test.cc",
            "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.h",
            "ssep/keb_optimizer/continuous_path_sampling.h",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "ssep/keb_optimizer/geometry_projection.h",
            "ssep/test/path_geometric_constraints_test.cc",
            "ssep/keb_optimizer/keb_problem.cc",
            "ssep/test/exported_control_constraints_test.cc",
            "ssep/keb_optimizer/path_geometric_constraints.h",
            "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/test/geometry_heading_projection_test.cc",
            "ssep/keb_optimizer/control_space_refiner.cc",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h",
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/data_structures/path_linear_constraint.h",
            "ssep/scenarios/tractor_trailer_general_planner.h",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "ssep/test/ssep_planner_test.cc",
            "ssep/CMakeLists.txt",
            "ssep/keb_optimizer/exported_control_constraints.h",
            "docs/ssep_continuous_kinematic_correction.md",
            "ssep/keb_optimizer/control_space_path_adapter.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/keb_optimizer/tractor_trailer_continuous_model.h",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/data_structures/body_collision_constraint.h",
            "ssep/keb_optimizer/control_space_refiner.h",
            "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.cc",
            "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
          ],
          "commitId" : "1512ba285bc90202b09be2366440f674d5fdbef8",
          "timestamp" : 1790632940000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 用几何约束与连续积分改善拖挂路径航向\u000a\u000a统一使用前置铰接点连续模型，通过控制空间积分及真实双轴几何目标投影改善路径，\u000a再以剩余预算精化连续运动学残差，替代单纯提高软约束权重的细化方式。\u000a保留固定状态、机械界、途经点及完整碰撞验收，冻结原合法候选的控制变化上限；\u000a分离最优原节点快照与实际输出诊断，保持原硬截止语义，不增加角度拒绝门槛。\u000a共用 QP、回溯和验收，修复 OSQP 内部计时重置问题，补充碰撞约束生成和回归测试。\u000a\u000a正式原始输入回放 13/13 成功，11/13 双角小于 1 度；两 General 最大误差仍为\u000a1.741/3.589 度。部分无优化总期限的旧多段流程耗时增加，详见方案文档。\u000a验证：173 项相关单测通过；主测试 238 项通过、13 项缺少历史数据；Python 68 项\u000a执行完成（1 项跳过）；IMV 2/2，倒车优先 3/4（保留原粗搜索节点上限失败）。\u000a",
          "date" : "2026-09-29 06:02:20 +0800",
          "id" : "1512ba285bc90202b09be2366440f674d5fdbef8",
          "msg" : "feat: 用几何约束与连续积分改善拖挂路径航向",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/path_geometric_constraints_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/exported_control_constraints.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/geometry_heading_projection_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/cost_features/tractor_trailer_kinematic_constraint.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/continuous_path_sampling_test.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/control_space_refiner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/control_space_refiner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/control_space_path_adapter.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/tractor_trailer_continuous_model.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/continuous_path_sampling.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/exported_control_constraints_test.cc"
            },
            {
              "editType" : "add",
              "file" : "docs/ssep_continuous_kinematic_correction.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/path_linear_constraint.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/body_collision_constraint.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/path_geometric_constraints.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_single_segment_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/control_space_refiner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/legacy_searchers/hybrid_a_star_tt.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/control_space_path_adapter.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_kinematic_diagnostics.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "ssep/keb_optimizer/geometry_projection.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/keb_optimizer/control_space_path_adapter.cc",
            "ssep/test/control_space_refiner_test.cc",
            "ssep/keb_optimizer/control_space_refiner.cc",
            "ssep/keb_optimizer/control_space_refiner.h"
          ],
          "commitId" : "360391b024803eee5a54b2644bd2857fc4f7c321",
          "timestamp" : 1790637440000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 为拖挂几何校正保留不可行初值的恢复预算\u000a\u000a为已有合法后备路径的控制空间优化增加显式恢复策略。初始活动碰撞约束\u000a违反、硬 QP 报不可行且尚无接受步时，返回后续几何校正；保留默认恢复、\u000a纯端点恢复及迭代上限处理，不将局部线性不可行解释为原任务无解。\u000a\u000a补充两种策略下的端点恢复回归；完整方案专项测试与原始场景回归通过。\u000a",
          "date" : "2026-09-29 07:17:20 +0800",
          "id" : "360391b024803eee5a54b2644bd2857fc4f7c321",
          "msg" : "fix: 为拖挂几何校正保留不可行初值的恢复预算",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/control_space_refiner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/control_space_path_adapter.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/control_space_refiner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/control_space_refiner.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/ssep_continuous_kinematic_correction.md",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/keb_optimizer/continuous_path_sampling.h",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/test/geometry_heading_projection_test.cc",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "aecef14000c2b39339218150e10823591040263b",
          "timestamp" : 1790637453000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正拖挂几何投影可行性边界并在接近目标时停止\u000a\u000a物理残差零阶值采用原世界坐标验收运算，保留局部自动微分 Jacobian。\u000a为场景合法但物理不可行的改善点增加可行性修正和合法基线回缩，核验\u000a固定维、Subset、参数边界、步长及分段合同，全部候选仍通过原完整验收。\u000a独立保存在硬截止内完成验收的最佳输出；统一以 1° 求解、1.01° 停止\u000a可选改善，复用实际导出 Profile 指标，不增加角度拒绝门槛。\u000a\u000a新增 UTM 浮点边界及参数合同测试，更新近目标停止断言和正式回归报告。\u000a13 份原始场景全部成功，双角最大 1.002810°；两份困难 General 复跑一致。\u000a专项 180 项通过，主测试 238 项通过；13 项仍因既有数据目录缺失而失败。\u000a",
          "date" : "2026-09-29 07:17:33 +0800",
          "id" : "aecef14000c2b39339218150e10823591040263b",
          "msg" : "fix: 修正拖挂几何投影可行性边界并在接近目标时停止",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/geometry_heading_projection_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/continuous_path_sampling.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_continuous_kinematic_correction.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/keb_optimizer/exported_control_constraints.h",
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/keb_optimizer/continuous_path_sampling.h",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h",
            "ssep/keb_optimizer/keb_problem.h",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "83f5c95769f2cda57552757f1bb042d943847da2",
          "timestamp" : 1790653594000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 恢复自动出库首个合法候选并保留较优路径\u000a\u000a为显式分阶段优化增加首合法候选恢复，同时约束原始及下发曲率、运动学和当前碰撞见证；只有完整验收通过才能保存，失败或硬超时恢复快照。自动出库按实际下发几何误差择优，保留合法兜底，接近目标只提前停止探索。原安全约束和总预算保持不变，实时 KEB 不变。\u000a\u000a验证：分布式构建主程序、回放及测试；186 项专项和 242 项主测试通过，另 13 项缺少历史数据目录。新四份及原十三份记录全部成功，最大几何误差 1.00335 度。\u000a",
          "date" : "2026-09-29 11:46:34 +0800",
          "id" : "83f5c95769f2cda57552757f1bb042d943847da2",
          "msg" : "fix: 恢复自动出库首个合法候选并保留较优路径",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/continuous_path_sampling.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/exported_control_constraints.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv",
            "docs/ssep_continuous_kinematic_correction.md"
          ],
          "commitId" : "e19e3de9acdd3229daaeb324af9e0aa3521f06cf",
          "timestamp" : 1790653609000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 收录四份自动出库恢复回归记录\u000a\u000a保存三份失败记录及一份同环境成功对照的原始数据哈希，沿用原参数和预算进行回放；补充恢复机制、候选择优与十七份回归结果。原始记录已校验归档到共享回归数据目录。\u000a",
          "date" : "2026-09-29 11:46:49 +0800",
          "id" : "e19e3de9acdd3229daaeb324af9e0aa3521f06cf",
          "msg" : "test: 收录四份自动出库恢复回归记录",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_continuous_kinematic_correction.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/servers/scene_vis_server.cc",
            "ssep/test/local_regression/test_scene_vis_directory.py",
            "ssep/offboard/servers/scene_vis_html_template.cc"
          ],
          "commitId" : "c0e0eb362722a967ddad265892c635ba21cdc9ae",
          "timestamp" : 1790656905000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 优化场景可视化目录浏览并支持多选下载\u000a\u000a在场景查看页加入可折叠目录侧栏，支持点击文件查看、当前文件高亮和同目录勾选状态保留。统一目录样式，固定路径与下载操作栏，文件列表独立滚动。\u000a\u000a新增多文件 tar 下载接口，校验文件类型、数量及总大小，支持中文、长文件名和同名文件。补充目录选择与下载失败恢复回归测试。\u000a\u000a验证：服务编译、3 项场景可视化回归测试及 HTTP 下载联调通过。\u000a",
          "date" : "2026-09-29 12:41:45 +0800",
          "id" : "c0e0eb362722a967ddad265892c635ba21cdc9ae",
          "msg" : "feat: 优化场景可视化目录浏览并支持多选下载",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_server.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_scene_vis_directory.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_ordered_feasibility_manifest.tsv",
            "docs/ssep_continuous_kinematic_correction.md",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/test/local_regression/README.md"
          ],
          "commitId" : "8aa962d184b5f0bb6aba2da6533313a200d1df7d",
          "timestamp" : 1790657562000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 为有序途经点停车接入首合法候选恢复\u000a\u000a分阶段停车使用原双地图生成恢复约束，保留固定尾段、精确终点、途经点及完整场景验收。解决初始曲率超限或运动学不可行后只能重复软权重优化的问题，不改变实时 KEB、权重或预算。\u000a\u000a两份现场失败记录按原10秒预算回放成功，头挂最大几何误差分别为0.726/0.063度及1.067/1.048度；已有17例全部成功。分布式编译通过，主测试242项通过，13项缺少历史输入目录。补充原始数据哈希和回归清单。\u000a",
          "date" : "2026-09-29 12:52:42 +0800",
          "id" : "8aa962d184b5f0bb6aba2da6533313a200d1df7d",
          "msg" : "fix: 为有序途经点停车接入首合法候选恢复",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_ordered_feasibility_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_continuous_kinematic_correction.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp",
            "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.hpp"
          ],
          "commitId" : "aa270a365c0d6e630c1e88746acae4283316679c",
          "timestamp" : 1790661899000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(wbca): add trailer-led reversing path optimizer\u000a",
          "date" : "2026-09-29 14:04:59 +0800",
          "id" : "aa270a365c0d6e630c1e88746acae4283316679c",
          "msg" : "feat(wbca): add trailer-led reversing path optimizer",
          "paths" : [
            {
              "editType" : "add",
              "file" : "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.hpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "replayer/scene_data/full_custom_codec_exclusions.yaml",
            "data/plan/ssep_data.hpp",
            "data/vehicle/request_routing_data.cpp",
            "plan/prepare/prepare_status.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/reversing_truck_path_task.cpp",
            "tasks/plan/ssep_task.cpp",
            "tasks/plan/reversing_truck_path_task.hpp",
            "Testing/reversing_truck_path_optimizer_test.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "data/ssep/ssep_activation.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "data/other/reverse_pickup.cpp",
            "data/ssep/ssep_activation.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "docs/reversing_truck_path_optimizer.md",
            "hmi/draw/draw_wbca_rlt.cpp",
            "tools/reversing_wbca_replay.cpp",
            "Testing/reversing_path_wbca_test.cpp",
            "algorithm/wbca/reversing_truck_wbca_manager.hpp",
            "replayer/scene_data/generated/plan_frame_member_inputs.json",
            "algorithm/wbca/reversing_truck_wbca_manager.cpp",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "data/plan_frame.hpp",
            "data/plan_frame.cpp",
            "Testing/CMakeLists.txt"
          ],
          "commitId" : "398e6a273420b68c794a5c7cd3c9b9fde1fb3842",
          "timestamp" : 1790668677000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(wbca): integrate reversing truck manager with SSEP\u000a",
          "date" : "2026-09-29 15:57:57 +0800",
          "id" : "398e6a273420b68c794a5c7cd3c9b9fde1fb3842",
          "msg" : "feat(wbca): integrate reversing truck manager with SSEP",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/reversing_truck_path_optimizer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/ssep_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "add",
              "file" : "docs/reversing_truck_path_optimizer.md"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_wbca_rlt.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/reversing_wbca_replay.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/other/reverse_pickup.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/reversing_path_wbca_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_status.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_custom_codec_exclusions.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan_frame.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan_frame.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "add",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/reversing_truck_wbca_manager.hpp",
            "tasks/plan/reversing_truck_path_task.cpp",
            "algorithm/wbca/reversing_truck_wbca_manager.cpp",
            "Testing/reversing_path_wbca_test.cpp"
          ],
          "commitId" : "d9ef30d021b2ff32d8b8349d610e0e35a56d3d02",
          "timestamp" : 1790671949000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(wbca): use nearby ego pose for reversing path start\u000a",
          "date" : "2026-09-29 16:52:29 +0800",
          "id" : "d9ef30d021b2ff32d8b8349d610e0e35a56d3d02",
          "msg" : "fix(wbca): use nearby ego pose for reversing path start",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reversing_path_wbca_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/other/reverse_pickup.cpp",
            "docs/reverse_pickup_search.md",
            "Testing/reverse_pickup_lifecycle_test.cpp"
          ],
          "commitId" : "0347725b412cb6a3b3f573e9d3c3644d76f90ad5",
          "timestamp" : 1790684579000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按已验收倒车路径更新途经点进度\u000a\u000a实车在原途经点位置圆外但沿合法路径连续跨越时，使用路径投影与现有跟踪容差更新顺序进度。保留同任务同路径、倒车分段、头挂角和定位跳变检查，不追溯补记点后静止状态。新增现场坐标及边界回归，105 项测试通过。\u000a",
          "date" : "2026-09-29 20:22:59 +0800",
          "id" : "0347725b412cb6a3b3f573e9d3c3644d76f90ad5",
          "msg" : "fix: 按已验收倒车路径更新途经点进度",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/other/reverse_pickup.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/reverse_pickup_search.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reverse_pickup_lifecycle_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/test/local_regression/README.md",
            "ssep/maps/ogm.h",
            "ssep/maps/ogm_builder.h",
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv",
            "ssep/maps/ogm.cc",
            "docs/ssep_stop_collision_extension.md",
            "ssep/maps/ogm_builder.cc"
          ],
          "commitId" : "e5fdd10ad41212911cbf5f22d43cdaebf0ab0f93",
          "timestamp" : 1790684579000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一起终点清障与停车碰撞验收\u000a\u000a沿用已有清障开关和范围，同步裁剪最终验收的障碍来源，保留区外残段、点云与Access分层语义及道路边界。原始场景输入继续完整保存。\u000a\u000a新增32种清障组合回归及19:52:49自动出库案例。原始10秒预算回放约2.32秒成功，20份场景、60项几何及88项碰撞场景测试通过。\u000a",
          "date" : "2026-09-29 20:22:59 +0800",
          "id" : "e5fdd10ad41212911cbf5f22d43cdaebf0ab0f93",
          "msg" : "fix: 统一起终点清障与停车碰撞验收",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_stop_collision_extension.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "ssep/test/local_regression/test_scene_vis_directory.py"
          ],
          "commitId" : "983b11a4254f00e262f730582d7e24f104063a6d",
          "timestamp" : 1790684593000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 切换场景文件后自动滚动定位当前文件\u000a\u000a目录加载后在下一绘制帧将当前文件滚动至可视区域中央，保留当前文件高亮。补充有当前文件和无当前文件时的滚动定位回归验证。\u000a\u000a验证：场景服务编译及 3 项可视化回归测试通过。\u000a",
          "date" : "2026-09-29 20:23:13 +0800",
          "id" : "983b11a4254f00e262f730582d7e24f104063a6d",
          "msg" : "fix: 切换场景文件后自动滚动定位当前文件",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_scene_vis_directory.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/ssep/offline_obstacles_loader.hpp",
            "data/ssep/offline_obstacles_loader.cpp",
            "docs/ssep_offline_obstacles.md",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/ssep/ssep_ec.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "data/ssep/ssep_ec.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "e4a4e9091eb6108f8fa1a20d2a261e897a7c06bd",
          "timestamp" : 1790692164000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 支持离线障碍物按坐标半径匹配\u000a\u000a新增 Point 条件，按世界坐标和可配置非负半径匹配搜索起终点。\u000a起点条件改为可选，省略时只判断必填的终点条件；配置后要求两端均匹配。\u000a校验非法坐标和半径，保留未知旧式 type/id 条件不匹配且不影响其他障碍的行为。\u000a\u000a补充 Full Proto 坐标与半径字段、生成物和配置说明，保持既有 Compact 配置合同。\u000a增加可选起点、半径边界、非法配置、旧条件兼容及 Full 编码回归测试。\u000a",
          "date" : "2026-09-29 22:29:24 +0800",
          "id" : "e4a4e9091eb6108f8fa1a20d2a261e897a7c06bd",
          "msg" : "feat: 支持离线障碍物按坐标半径匹配",
          "paths" : [
            {
              "editType" : "add",
              "file" : "docs/ssep_offline_obstacles.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_obstacles_loader.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_obstacles_loader.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "ssep/test/local_regression/test_scene_vis_directory.py"
          ],
          "commitId" : "809874369f7a26a6acea801e5b7a545dcdef1314",
          "timestamp" : 1790692708000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留场景目录点击文件后的滚动位置\u000a\u000a按目录保存点击文件时的滚动偏移，页面重载后优先恢复原位置；无有效记录时仍定位当前文件。补充滚动位置保存、恢复及无效记录回退测试。\u000a",
          "date" : "2026-09-29 22:38:28 +0800",
          "id" : "809874369f7a26a6acea801e5b7a545dcdef1314",
          "msg" : "fix: 保留场景目录点击文件后的滚动位置",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_scene_vis_directory.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/tractor_trailer_general_planner.h",
            "ssep/test/local_regression/tt_precise_feasibility_manifest.tsv",
            "docs/ssep_continuous_kinematic_correction.md",
            "ssep/test/forward_precise_planner_test.cc",
            "ssep/test/local_regression/README.md"
          ],
          "commitId" : "b5cc322584a93b6c6bf2267896278c93d7c06d0e",
          "timestamp" : 1790693494000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 为精确终点搜索接入首合法候选恢复\u000a\u000a保持实测起点、精确终点和既有验收上限，初轮无合法候选时使用现有有界恢复流程。末端直线豁免与最终碰撞验收保持一致。\u000a\u000a新增起点碰撞不可通过移动位姿绕过的测试，归档22:16:36失败及22:18:33成功对照。两例与原20份场景通过，89项专项测试通过；记录原预算下角度精化随剩余时间变化的限制。\u000a",
          "date" : "2026-09-29 22:51:34 +0800",
          "id" : "b5cc322584a93b6c6bf2267896278c93d7c06d0e",
          "msg" : "fix: 为精确终点搜索接入首合法候选恢复",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_precise_feasibility_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_continuous_kinematic_correction.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_general_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/forward_precise_planner_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "data/ssep/reverse_ec.cpp"
          ],
          "commitId" : "d1ebee114e4c90e458f7b74330cbbed59be168ea",
          "timestamp" : 1790693494000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 刷新倒车重搜接口的实车起点\u000a\u000a停稳重搜起点接口复用既有起点构造，避免空实现返回成功并留下旧请求位姿。当前生产倒车分支未调用该重搜接口，此项为防御修复。新增连续请求更新头挂位姿和无效底盘拒绝测试。\u000a",
          "date" : "2026-09-29 22:51:34 +0800",
          "id" : "d1ebee114e4c90e458f7b74330cbbed59be168ea",
          "msg" : "fix: 刷新倒车重搜接口的实车起点",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/reverse_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/switch_data.cpp"
          ],
          "commitId" : "ca51e8b514abe01ab149f3e2ef1d196c7a1cf960",
          "timestamp" : 1790734437000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 合入变道途经点起终点横向约束\u000a\u000a按目标参考线所选终点回查同一途经点记录，检查当前参考线起点横向距离；完整记录起点不合格时不退入仅终点触发。保留当前分支的动态变道准备距离。\u000a\u000a验证：pnc_node 分布式构建通过。\u000a\u000aOriginal-Commit: 624719ffd99ab23502c2006391c7bd76d87b4708\u000aOriginal-Subject: fix：针对西联z型场景追加变道起终点横向约束\u000a",
          "date" : "2026-09-30 10:13:57 +0800",
          "id" : "ca51e8b514abe01ab149f3e2ef1d196c7a1cf960",
          "msg" : "fix: 合入变道途经点起终点横向约束",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/constrain/block_data.cpp",
            "data/constrain/temporary_stop_data.cpp",
            "data/constrain/block_data.hpp",
            "Testing/CMakeLists.txt",
            "Testing/shore_crane_follow_stop_test.cpp"
          ],
          "commitId" : "15f24f39fbb148ff81013584f9bab47e9bd5168f",
          "timestamp" : 1790734437000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 合入岸桥人工对位防遮挡跟车判断\u000a\u000a旁车道近停作业车触发实时跟车检查，转换原始参考线和 GuideLine 坐标后判断最近前车对应的整车停车占用；共用现有 1 s 保持。保留当前队列预计算、整车范围匹配和缓存修复，并合并普通与禁停 ST 遍历。\u000a\u000a补充旁车道条件、最近前车、坐标转换、挂车占用、速度边界与道路外排除回归。\u000a\u000a验证：岸桥 6 项行为回归通过，pnc_node 分布式构建通过。\u000a\u000aOriginal-Commit: 96885bd974a3ca884bb24971fd4ab9dcdd2263f7\u000aOriginal-Commit: 6bd8ded81c8e490562765bb445295ea2324a6e62\u000aOriginal-Subject: fix：岸桥人工车防遮挡逻辑\u000aOriginal-Subject: fix：岸桥人工对位防遮挡逻辑更新\u000a",
          "date" : "2026-09-30 10:13:57 +0800",
          "id" : "15f24f39fbb148ff81013584f9bab47e9bd5168f",
          "msg" : "fix: 合入岸桥人工对位防遮挡跟车判断",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/shore_crane_follow_stop_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/constrain/temporary_stop_data.cpp",
            "Testing/temporary_stop_startup_test.cpp",
            "Testing/CMakeLists.txt"
          ],
          "commitId" : "f5895d79507ff3e817f49e75145f2abcb80e7186",
          "timestamp" : 1790734437000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 合入 SS 优先解除进堆场等待策略\u000a\u000a启动指令优先解除 3 m 内可跳过的进堆场等待；自动放行保留原停车线选择，延续当前不可跳过保护和历史 JUMP 行为。\u000a\u000a补充 SS、自动请求、距离边界、任务标志、路口原因与连续解除回归。\u000a\u000a验证：SS 7 项行为回归通过；完整禁停与路由回归 94 项通过。\u000a\u000aOriginal-Commit: b1da3611f26e17062ede234d544aa8810091a5b7\u000aOriginal-Subject: fix：ss优先解除堆高机禁停\u000a",
          "date" : "2026-09-30 10:13:57 +0800",
          "id" : "f5895d79507ff3e817f49e75145f2abcb80e7186",
          "msg" : "fix: 合入 SS 优先解除进堆场等待策略",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/temporary_stop_startup_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/config/cfg_long_plan.hpp",
            "data/config/cfg_long_plan.cpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "Testing/stacking_safe_distance_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "2fb5bd802dd73fd3bdf2796aec92d03738061590",
          "timestamp" : 1790734437000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 统一堆高机场终点跟车距离并修复配置回放\u000a\u000a将终点前 50 m 的基础跟车距离选择移入 CfgLongPlan::GetSafeDistance，保留闸口、短距、变道和对位策略优先级；线上缺参及旧场景缺字段时继承堆场配置。\u000a\u000aSafeDistance 增加带 presence 的独立障碍物跟车距离，旧消息继承普通跟车距离，显式 0 保留；补齐 Full、Compact Recorded/Candidate 和旧读端转发回归。原提交的 Proto 118 与当前散货限速字段冲突，按本地分支合同核对后改用未占用的 120，并同步生成描述符与审计文件。\u000a\u000a验证：scaffold/generate/check-generated/check-proto-breaking 通过；pnc_node 分布式构建通过；回放测试 306 项通过、2 项缺可选样本跳过，统一距离测试 6 项通过。\u000a\u000aOriginal-Commit: b1745de9fa1049a25cabf83797bc056266a2de32\u000aOriginal-Subject: fix：低贝位堆高机场新增大车距参数\u000a",
          "date" : "2026-09-30 10:13:57 +0800",
          "id" : "2fb5bd802dd73fd3bdf2796aec92d03738061590",
          "msg" : "fix: 统一堆高机场终点跟车距离并修复配置回放",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "Testing/stacking_safe_distance_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/constrain/block_data.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/config_proto_codec.cpp",
            "data/config/cfg_func_sw.hpp",
            "data/config/cfg_func_sw.cpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "Testing/shore_crane_follow_stop_test.cpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "d7b98d2e34368274dd5237eebfb80d26426cba56",
          "timestamp" : 1790736118000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加默认关闭的岸桥防遮挡跟车开关\u000a\u000a新增 use_func_shore_crane_follow_stop，默认关闭，支持 ROS 参数热更新。\u000a门控岸桥人工对位时的实时前车跟车停车检测，保留既有预测策略。\u000a补齐 Full/Compact 配置回放、旧包默认关闭及开关启停回归。\u000a\u000aRelated-Commit: 15f24f39fbb148ff81013584f9bab47e9bd5168f\u000a",
          "date" : "2026-09-30 10:41:58 +0800",
          "id" : "d7b98d2e34368274dd5237eebfb80d26426cba56",
          "msg" : "feat: 增加默认关闭的岸桥防遮挡跟车开关",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/shore_crane_follow_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/stacking_safe_distance_test.cpp",
            "data/config/cfg_long_plan.cpp",
            "Testing/CMakeLists.txt",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/map/reference/reference_road_section.cpp"
          ],
          "commitId" : "f6a62de6082e1edeb84140d47ed4675b2e7f092b",
          "timestamp" : 1790736127000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 平滑堆高机场终点跟车距离并保护地图索引\u000a\u000a使用有效 PNC local map 当前路段判定堆高机场，修复路段和分段索引等于容器大小时的越界。\u000a普通跟车从终点前 50 m 开始按 smoothstep 过渡整份 SafeDistance，到终点完全采用目标配置。\u000a过渡仅由当前距离计算，不累积 getter 调用次数；保持高优先策略，复用闸口距离插值。\u000a补充距离入口连续、弯道单调过渡、整档配置和索引边界回归。\u000a\u000aRelated-Commit: b1745de9fa1049a25cabf83797bc056266a2de32\u000a",
          "date" : "2026-09-30 10:42:07 +0800",
          "id" : "f6a62de6082e1edeb84140d47ed4675b2e7f092b",
          "msg" : "fix: 平滑堆高机场终点跟车距离并保护地图索引",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/stacking_safe_distance_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/local_regression/README.md",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h",
            "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv",
            "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "bb88788b89fc25801c3bc62dfdcbc9ad25ada5f7",
          "timestamp" : 1790739115000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 支持拖挂出库禁止倒车并恢复前进可行路径\u000a\u000aAuto 出库增加 allow_reverse_adjustment 参数；关闭时仅搜索前进路径，\u000a使用完整原始预算，并在最终验收中拒绝倒车方向。\u000a\u000a前进优化失败时在同一预算内释放额外固定尾段，保留粗搜索首末位姿硬约束。\u000a粗搜索提前检查不可释放的终点车身碰撞；单层 KEB 尊重显式终点约束模式。\u000a首合法恢复 QP 向验收边界内预留数值裕量，最终物理和碰撞阈值保持原值。\u000a\u000a归档原始出库记录及明确标注的禁止倒车派生记录，新增边界和方向回归。\u000a验证：90 项搜索/碰撞专项、122 项运动学测试及 24 个场景回归通过。\u000a本例单段前进成功，角度误差约 4.73°/1.75°，尚未稳定达到 1°。\u000a",
          "date" : "2026-09-30 11:31:55 +0800",
          "id" : "bb88788b89fc25801c3bc62dfdcbc9ad25ada5f7",
          "msg" : "fix: 支持拖挂出库禁止倒车并恢复前进可行路径",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_exit_parking_spot_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/multi_stage_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/config_proto_codec.cpp",
            "data/ssep/ssep_scenario_config_loader.cpp",
            "data/ssep/offline_obstacles_loader.hpp",
            "docs/ssep_scenario_config_lifecycle.md",
            "data/ssep/offline_obstacles_loader.cpp",
            "config/config_truck/ssep_port_scenarios_jinxi.yaml",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/ssep/ssep_ec.hpp",
            "data/ssep/ssep_scenario_config.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "data/ssep/ssep_ec.cpp",
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "data/ssep/ssep_scenario_config.hpp"
          ],
          "commitId" : "de9a82af60f6dd821942c41c6c56a43914537465",
          "timestamp" : 1790739164000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 为 SSEP 场景增加双端位置触发条件\u000a\u000a场景 start 条件读取当前有效车辆定位，end 条件读取当前有效任务终点，\u000a支持 Point 的 UTM 坐标和可配置半径、Lane ID 及 YardArea 区域名称。\u000a位置条件与既有任务条件按 AND 匹配，保持首匹配及原有起终点构造顺序。\u000a共用离线障碍条件的解析和几何判断，按区域名称获取完整 YardArea 几何，\u000a避免顶点距离预筛选漏掉大区域内部点。\u000a\u000a两端位置条件沿现有 Full/Compact ReplayInput 以 typed double 保存，\u000a缺字段保持无对应端限制，保留零半径与缺半径的区别，并更新生成合同。\u000a津西示例增加指定起点半径 5 米的禁止倒车出库规则，优先于通用出库。\u000a\u000a验证：78 项配置/生命周期测试和 312 项回放基础测试通过，\u000a另 2 项可选外部 fixture 测试跳过；合同生成及 breaking 检查、pnc_node 编译通过。\u000a",
          "date" : "2026-09-30 11:32:44 +0800",
          "id" : "de9a82af60f6dd821942c41c6c56a43914537465",
          "msg" : "feat: 为 SSEP 场景增加双端位置触发条件",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_obstacles_loader.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_scenario_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_scenario_config_loader.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/ssep_port_scenarios_jinxi.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_obstacles_loader.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_scenario_config_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_scenario_config.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc",
            "ssep/test/tractor_trailer_kinematic_weight_test.cc"
          ],
          "commitId" : "5dfd63b356cc12e0b1524887362c5d725a18d4f4",
          "timestamp" : 1790761442000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复拖挂出库碰撞恢复与曲率边界收敛\u000a\u000a碰撞恢复选取每段扫掠中穿透最深的见证，并生成严格分离余量，避免反复将碰撞推到下一采样点。\u000a曲率生成目标略收紧到机械边界内，最终验收继续使用原机械上限。\u000a软约束恢复遇到真实车身碰撞时提前进入联合恢复，明显收敛时在原请求截止和预留预算内延续迭代；超时回滚且完整验收保持不变。\u000a\u000a验证：86 项碰撞测试、123 项运动学测试通过；29 个场景回归通过，新增 5 个出库失败案例均恢复成功，独立车身扫掠检查无碰撞。\u000a",
          "date" : "2026-09-30 17:44:02 +0800",
          "id" : "5dfd63b356cc12e0b1524887362c5d725a18d4f4",
          "msg" : "fix: 修复拖挂出库碰撞恢复与曲率边界收敛",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv"
          ],
          "commitId" : "ccb50f2df494433f4a45e154aa8e6bf9b0ab95e7",
          "timestamp" : 1790761455000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 增加五个拖挂出库失败场景回归\u000a\u000a归档 2026-09-30 的 16:11:29、16:14:04、16:32:44、16:33:07 和 16:39:14 原始记录，清单记录 SHA-256 并保留原始参数和搜索预算。\u000a覆盖完整车身碰撞恢复、曲率边界及单段前进出库；16:14:04 校验仅一段路径。\u000a几何航向误差继续统计，不新增拒绝门槛；16:11:29 挂车误差约 5.2 度仍需后续改善。\u000a",
          "date" : "2026-09-30 17:44:15 +0800",
          "id" : "ccb50f2df494433f4a45e154aa8e6bf9b0ab95e7",
          "msg" : "test: 增加五个拖挂出库失败场景回归",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_exit_feasibility_manifest.tsv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/motion_primitive_sampler/arc_path_motion_primitive_sampler.cc",
            "ssep/test/coarse_search_stop_clearance_test.cc"
          ],
          "commitId" : "90fc56dc64fd424ba1f5ac48866dd4f0a4b71d6f",
          "timestamp" : 1790768257000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留圆弧基元曲率限幅的转向方向\u000a\u000a修复负曲率超过上限时被错误翻转为正曲率的问题。\u000a使用带符号限幅，并覆盖左右转参考圆弧的回归测试。\u000a",
          "date" : "2026-09-30 19:37:37 +0800",
          "id" : "90fc56dc64fd424ba1f5ac48866dd4f0a4b71d6f",
          "msg" : "fix: 保留圆弧基元曲率限幅的转向方向",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/motion_primitive_sampler/arc_path_motion_primitive_sampler.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/coarse_search_stop_clearance_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "replayer/scene_data/compact_geometry_codec.cpp",
            "proto/plan_data.proto",
            "ssep/test/CMakeLists.txt",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "ssep/test/bidirectional_candidate_validation_test.cc",
            "ssep/data_structures/path.h",
            "data/other/parking_pass_progress.cpp",
            "ssep/test/bidirectional_stop_collision_test.cc",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "ssep/scenarios/planner_utils.cc",
            "Testing/scene_replay_foundation_test.cpp",
            "ssep/scenarios/planner_utils.h",
            "ssep/scenarios/parking_approach_loop.h",
            "data/other/parking_pass_progress.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "data/ssep/ssep_ec.cpp",
            "data/ssep/ssep_activation.cpp",
            "ssep/data_structures/path.cc",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/pnc_scene/compact_geometry.proto",
            "ssep/protos/path.proto",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc",
            "ssep/test/ssep_planner_test.cc",
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h",
            "Testing/parking_pass_progress_test.cpp",
            "ssep/data_structures/type_definition.h",
            "ssep/data_structures/type_definition.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "ssep/ssep_planner.cc",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "ssep/test/parking_approach_loop_test.cc"
          ],
          "commitId" : "33461e4ad3de9bfca4aa7ab7c54f81ac540480f6",
          "timestamp" : 1790768257000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复拖挂停车搜索优先级与任务换向进度\u000a\u000a优先一次前进到参考倒车点后倒入，失败或出现闭环再尝试多段调整。\u000a最后兜底阶段拒绝闭环候选后继续原搜索队列，保留搜索预算和完整车身验收。\u000a\u000a显式传递真实任务换向标记，覆盖路径裁剪、拼接、下发、执行进度及现场记录，\u000a避免局部调整提前消耗任务途经点。同步 Full/Compact 字段与旧数据缺省行为。\u000a\u000a增加搜索候选继续扩展、闭环识别、任务换向和回放测试。\u000a验证：265 项可运行 C++ 测试、23 项进度测试、2 项回放测试及 Proto 检查通过；\u000apnc_node 和回放工具编译通过。13 项依赖缺失本地数据目录的场景测试未完成。\u000a",
          "date" : "2026-09-30 19:37:37 +0800",
          "id" : "33461e4ad3de9bfca4aa7ab7c54f81ac540480f6",
          "msg" : "fix: 修复拖挂停车搜索优先级与任务换向进度",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/other/parking_pass_progress.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/bidirectional_stop_collision_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/type_definition.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/other/parking_pass_progress.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_geometry_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/protos/path.proto"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/parking_approach_loop_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/path.cc"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/planner_utils.h"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/bidirectional_candidate_validation_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/parking_approach_loop.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/parking_pass_progress_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_geometry.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/planner_utils.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/path.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/type_definition.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/test_tt_reference_cusp_quality.py",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/tt_reference_cusp_quality.json",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/tt_reference_cusp_quality.py",
            "ssep/test/local_regression/tt_reference_cusp_manifest.tsv"
          ],
          "commitId" : "4a1c00ccd7c6c8fd01bc45edf32896c325282f68",
          "timestamp" : 1790768257000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 增加参考倒车点闭环与两段路径回归\u000a\u000a记录五个参考倒车点场景及源文件哈希，独立验收任务换向和完整车身扫掠。\u000a增加同档位闭环检查，明确拒绝旧绕圈结果，保留正常 U/S 形及跨换向退回。\u000a18:59:44、19:00:26 单独要求两段完成，其他多段场景不统一限制换向次数。\u000a\u000a验证：16 项 Python 测试及 5 个重点回放通过；19:00:36 额外复测通过，\u000a头/挂航向误差约 0.63°/1.00°。\u000a",
          "date" : "2026-09-30 19:37:37 +0800",
          "id" : "4a1c00ccd7c6c8fd01bc45edf32896c325282f68",
          "msg" : "test: 增加参考倒车点闭环与两段路径回归",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reference_cusp_quality.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reference_cusp_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_tt_reference_cusp_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_reference_cusp_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/offline_obstacles_loader.cpp",
            "data/ssep/ssep_ec.cpp",
            "docs/ssep_offline_obstacles.md",
            "Testing/ssep_scenario_config_lifecycle_test.cpp"
          ],
          "commitId" : "7b4622697a7a8fcecdfc90486054b945c5eb9713",
          "timestamp" : 1790787253000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 支持离线障碍物仅按起点条件加载\u000a\u000a允许 start 和 end 任一条件单独配置，同时配置时要求两者均匹配，继续拒绝缺少全部条件或显式空条件。修复仅配置 start 导致整份离线障碍物列表加载失败的问题。\u000a\u000a补充混合条件加载、半径边界及无效配置回归测试，并更新配置文档。分布式编译通过，离线障碍物测试 7/7 通过；完整 SSEP 测试 78/79 通过，TractorTrailerPassPointSelectionUsesActualParameters 失败，失败路径不经过本次修改。\u000a",
          "date" : "2026-10-01 00:54:13 +0800",
          "id" : "7b4622697a7a8fcecdfc90486054b945c5eb9713",
          "msg" : "fix: 支持离线障碍物仅按起点条件加载",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/ssep_offline_obstacles.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_obstacles_loader.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "Testing/parking_pass_progress_test.cpp"
          ],
          "commitId" : "3371203dfaaaacdb4608a45dc0d85533c5e405a3",
          "timestamp" : 1790865393000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复 SSEP 倒超换向点后无法切段\u000a\u000a换向线触发停车后，允许纵向越过不超过 2 米且横向偏差小于 1 米的车辆切换下一段。使用原始路径的末端切向，避免延长段和倒车航向翻转影响判定，保留停车及防连续跳段检查。\u000a\u000a补充倒超恢复、距离边界、正反向、量化误差、异常路径和连续换向回归。147 项 SSEP 专项测试通过，pnc_node 编译通过；现场快照停车后的 244 帧均满足新几何恢复条件。\u000a",
          "date" : "2026-10-01 22:36:33 +0800",
          "id" : "3371203dfaaaacdb4608a45dc0d85533c5e405a3",
          "msg" : "fix: 修复 SSEP 倒超换向点后无法切段",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/parking_pass_progress_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/config.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "Testing/keb_roadside_config_test.cpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/reversing_truck_path_task.cpp",
            "Testing/reversing_path_wbca_test.cpp",
            "data/config/cfg_lat_plan.hpp",
            "algorithm/wbca/reversing_truck_wbca_manager.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "algorithm/wbca/reversing_truck_wbca_manager.cpp",
            "data/config/cfg_lat_plan.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "610888a71bc167e2dfdb5b706760c7b8839d220d",
          "timestamp" : 1790867379000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat(wbca): configure reversing corridor deviation allowance\u000a",
          "date" : "2026-10-01 23:09:39 +0800",
          "id" : "610888a71bc167e2dfdb5b706760c7b8839d220d",
          "msg" : "feat(wbca): configure reversing corridor deviation allowance",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/keb_roadside_config_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reversing_path_wbca_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/tractor_trailer_parking_collision.h",
            "ssep/maps/ogm_config_utils.cc",
            "ssep/maps/ogm.h",
            "ssep/maps/ogm_builder.h",
            "ssep/test/scene_replay_obstacle_inputs_test.cc",
            "ssep/test/parking_collision_provenance_test.cc",
            "ssep/maps/ogm.cc",
            "ssep/maps/ogm_builder.cc"
          ],
          "commitId" : "178853c2cec1dc1855887fd36fe43b2a7ebbfa7f",
          "timestamp" : 1790869776000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复拖挂停车起点派生占用与豁免生命周期\u000a\u000a在停车约束建图中按真实头挂车身与整格相交恢复起点新增占用，\u000a保留原始线段和已有实体，并正确处理挂接偏移及车体坐标。\u000a\u000a保存临时豁免来源，仅允许匹配建图起点的完整路径使用；\u000a车辆整体脱离后恢复约束，避免返回起点或分段验收重启豁免。\u000a同步优化碰撞修复、地图克隆及重建的状态处理。\u000a\u000a验证：50 项相关测试通过；新增两条离线约束的现场场景回放\u000a及独立车身碰撞检查通过；并行编译与 diff 检查通过。\u000a",
          "date" : "2026-10-01 23:49:36 +0800",
          "id" : "178853c2cec1dc1855887fd36fe43b2a7ebbfa7f",
          "msg" : "fix: 修复拖挂停车起点派生占用与豁免生命周期",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/scene_replay_obstacle_inputs_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_parking_collision.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/parking_collision_provenance_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_builder.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/maps/ogm_config_utils.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "source/ros_source_ads_target.hpp",
            "source/ros_source_ads_target.cpp"
          ],
          "commitId" : "3455c3d9997ff28b5f918899b0ded314c6715f31",
          "timestamp" : 1790869805000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保存任务 bag 的挂车姿态快照\u000a\u000a复用 TrailerPosture 保存相对物理车头的挂角和有效标记，与 Target 使用同一时间戳。\u000a在互斥锁下取得车头及挂车快照，异步保存按值捕获，避免姿态读取竞争。\u000a验证：diff 检查通过；全量构建受现有 ssep/maps/ogm.h 的 cv::Mat 运算错误阻断。\u000a",
          "date" : "2026-10-01 23:50:05 +0800",
          "id" : "3455c3d9997ff28b5f918899b0ded314c6715f31",
          "msg" : "fix: 保存任务 bag 的挂车姿态快照",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "source/ros_source_ads_target.cpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_ads_target.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/out_yard_junction_ec.cpp"
          ],
          "commitId" : "49f604896aa26adb2186a24659bd0cb43e0e8791",
          "timestamp" : 1790872470000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 调整中铁联集出场引导线起点后延距离\u000a\u000a将中铁联集场景的起点后延距离由 25 米调整为 2 米，使默认起点位于基准停止线前 2 米。\u000a",
          "date" : "2026-10-02 00:34:30 +0800",
          "id" : "49f604896aa26adb2186a24659bd0cb43e0e8791",
          "msg" : "fix: 调整中铁联集出场引导线起点后延距离",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_hmi_virtual_obs.cpp",
            "data/config/cfg_func_sw.cpp",
            "hmi/common/pnc_graphics_view.cpp"
          ],
          "commitId" : "8ef11502f052d1046e6cc554ceee839e0b67c3c2",
          "timestamp" : 1790986962000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补齐 HMI 虚拟障碍线操作与持久化诊断日志\u000a\u000a记录右键操作的 Shift 状态、新增删除坐标、删除命中数量及初始化加载数量，统一使用 HmiVirtualObs 日志前缀，便于排查超视距线删除后再次出现的问题。\u000a\u000a补充保存路径、失败原因及文件写入关闭结果检查，区分内存删除与文件保存结果。\u000a",
          "date" : "2026-10-03 08:22:42 +0800",
          "id" : "8ef11502f052d1046e6cc554ceee839e0b67c3c2",
          "msg" : "fix: 补齐 HMI 虚拟障碍线操作与持久化诊断日志",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_hmi_virtual_obs.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/pnc_graphics_view.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/plan/switch_helper.cpp",
            "data/plan/switch_helper.hpp",
            "data/obstacle/cluster_lane_change_safety_test.cpp",
            "data/plan/switch_data.cpp"
          ],
          "commitId" : "4eedba65046c4305a667821bb80a0fbc6edd17f6",
          "timestamp" : 1790988543000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 提前准备堆场途径点变道并保留起点门禁\u000a\u000a堆场变道此前仅按固定距离进入准备，车辆从较高速度减速后已接近\u000a出口路口，导致 ATTEMPT 阶段反复因变道路径越过路口而取消。\u000a\u000a复用舒适减速度、载重限制和 jerk 曲线计算减速准备距离，并预留\u000a状态等待距离。双向 IMV 的定位加速度按行驶方向换算。\u000a保留原有起点附近的横向变道门禁与路口保护，补充路口取消原因日志。\u000a\u000a新增减速准备、正反向加速度、无效参数和起点门禁回归测试，\u000a27 项变道相关测试通过；同步更新数据头文件审计指纹。\u000a",
          "date" : "2026-10-03 08:49:03 +0800",
          "id" : "4eedba65046c4305a667821bb80a0fbc6edd17f6",
          "msg" : "fix: 提前准备堆场途径点变道并保留起点门禁",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_helper.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_lane_change_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_helper.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/common/pnc_graphics_view.cpp",
            "hmi/common/pnc_graphics_view.hpp",
            "Testing/hmi_virtual_obs_interaction_test.cpp",
            "Testing/CMakeLists.txt"
          ],
          "commitId" : "6b98f901915cf71f2ff27c2afc06f4a16293feab",
          "timestamp" : 1790999013000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复右键重复释放误删超视距线\u000a\u000a按右键按下时的操作类型配对处理新增和删除，忽略无对应操作的释放及右键双击，避免取消短线时误删已有线且未触发保存。\u000a\u000a取消绘制时仅清理本次临时线，保护待处理请求并忽略空列表删除，避免 Shift 变化或连续操作导致状态错乱。\u000a\u000a新增 10 个 Qt 交互回归用例，覆盖测距双击、重复释放、Shift 切换、取消恢复及待处理请求保护。回归测试、pnc_node 分布式编译与 Proto 检查通过。\u000a",
          "date" : "2026-10-03 11:43:33 +0800",
          "id" : "6b98f901915cf71f2ff27c2afc06f4a16293feab",
          "msg" : "fix: 修复右键重复释放误删超视距线",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/hmi_virtual_obs_interaction_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/pnc_graphics_view.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/pnc_graphics_view.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/ssep_data.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.cpp",
            "tasks/deciders/search_decider/search_decider_lifecycle.hpp",
            "data/plan/ssep_task_context.hpp",
            "data/map/reference/reference_road_section.cpp",
            "Testing/reference_line_replan_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "docs/ssep_search_lifecycle.md",
            "Testing/search_decider_lifecycle_test.cpp",
            "tasks/deciders/other_decider/replan_decider.cpp",
            "plan/scenarios/prepare_scenario.cpp",
            "Testing/scenario_search_exit_test.cpp",
            "data/plan/ssep_task_context.cpp",
            "tasks/deciders/other_decider/replan_decider.hpp",
            "data/map/reference/reference_road_section.hpp"
          ],
          "commitId" : "7adda00e8acb9466ab1572f444ed62b94f03fe11",
          "timestamp" : 1791203589000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复任务切换后沿用旧路口搜索路径\u000a\u000a新任务通过连续性校验后重新检查路口规划器准入，清理不匹配的搜索路径、\u000a备用路径和重搜上下文，避免旧引导线覆盖新路线。前置任务失败时也通过\u000aReplanDecider::Reset 完成清理，防止错过任务切换首帧。\u000a\u000a基于 pnc_local_map 的实际连接和目标车道判断普通路口及入堆场搜索复用，\u000a同路线换任务或车道索引重排不重新搜索。共用判定置于数据层，支持轻量\u000a回放 SDK 独立链接，并同步头文件审计缓存及生命周期文档。\u000a\u000a验证：pnc_node 和独立 embedded SDK 编译链接通过；参考线与搜索生命周期\u000a回归测试 401 项通过、61 项跳过；git diff --check 通过。\u000a",
          "date" : "2026-10-05 20:33:09 +0800",
          "id" : "7adda00e8acb9466ab1572f444ed62b94f03fe11",
          "msg" : "fix: 修复任务切换后沿用旧路口搜索路径",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.hpp"
            },
            {
              "editType" : "add",
              "file" : "data/plan/ssep_task_context.hpp"
            },
            {
              "editType" : "add",
              "file" : "data/plan/ssep_task_context.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/scenarios/prepare_scenario.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/ssep_search_lifecycle.md"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scenario_search_exit_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/search_decider/search_decider_lifecycle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/search_decider_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/replan_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reference_line_replan_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/other/reverse_pickup.cpp",
            "Testing/reverse_pickup_lifecycle_test.cpp"
          ],
          "commitId" : "cc9da62d5fc49b59e7e38f30d79e2ef808910f15",
          "timestamp" : 1791209175000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 将倒车接货终点到位阈值调整为 0.8 米\u000a\u000a将终点位置容差与搜索途经点容差分离，允许停稳车辆在目标点 0.8 米范围内进入 PARK_LOCK，解决 AT001 场景距离约 0.559 米时无法锁定的问题。\u000a\u000a补充现场偏差、半径边界、二维距离、停稳和朝向条件回归，48 项倒车接货相关测试通过。\u000a",
          "date" : "2026-10-05 22:06:15 +0800",
          "id" : "cc9da62d5fc49b59e7e38f30d79e2ef808910f15",
          "msg" : "fix: 将倒车接货终点到位阈值调整为 0.8 米",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/other/reverse_pickup.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reverse_pickup_lifecycle_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/decision/obstacle_decision.cpp",
            "data/obstacle/decision/obstacle_decision_test.cpp"
          ],
          "commitId" : "84e522a37b53a560f2393f34260841ce9fe83301",
          "timestamp" : 1791209576000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复静止对向车辆绕行许可反复撤销\u000a\u000a对已确认静止且沿道路对齐的车辆使用车身朝向判断对向绕行准入，\u000a避免静止时运动方向归为同向后持续进入跟车等待。\u000a静止车辆靠边放行统一要求连续确认，并在短暂放行期间保留等待进度，\u000a防止靠边证据抖动反复撤销绕行准备、清零久停计数。\u000a\u000a新增五项连续帧回归，覆盖对向准入、靠边抖动、等待进度及运动、\u000a切入和斜向退出。相关 175 项测试通过，pnc_node 与 pnc_replayer\u000a分布式编译通过。\u000a使用哈希匹配的津西 1.0.11 地图顺序重算 AT001 现场 bag 全部\u000a460 帧，7480 持续获得许可，DP 全程左绕，所选节点无碰撞或越界标记。\u000a",
          "date" : "2026-10-05 22:12:56 +0800",
          "id" : "84e522a37b53a560f2393f34260841ce9fe83301",
          "msg" : "fix: 修复静止对向车辆绕行许可反复撤销",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/config/cfg_lat_plan.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "data/obstacle/decision/obstacle_decision.cpp",
            "Testing/compact_driving_corridor_restore_test.cpp",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "data/obstacle/obstacle_decider_attr.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "data/obstacle/obstacle_decider_attr.hpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "docs/pnc_algorithm_replay/dp_corridor_performance.md"
          ],
          "commitId" : "d9e75b3754da247f7dadf9e36de80468fb7757aa",
          "timestamp" : 1791391759000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 按实际时间确认静止车辆绕行等待\u000a\u000a沿用既有帧数配置并按 10 Hz 换算等待时长，使用规划时间戳推进计时，避免决策频率和重复快照导致等待延长。静止对向车辆独立确认朝向，防止 bbox 短暂翻转或残留 REVERSE 状态提前放行。\u000a\u000a补齐时钟及对向确认状态的跨帧继承、失效重置和 Full/Compact 回放合同，增加行为与协议回归测试、策略隔离重算诊断及说明。\u000a\u000a验证：pnc_node 和 pnc_replayer 编译通过；184 项行为测试、321 项回放基础测试通过；现场 AT001 2026-10-07 bag 460 帧完整重算通过。协议生成、一致性及兼容检查通过。\u000a",
          "date" : "2026-10-08 00:49:19 +0800",
          "id" : "d9e75b3754da247f7dadf9e36de80468fb7757aa",
          "msg" : "fix: 按实际时间确认静止车辆绕行等待",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/dp_corridor_performance.md"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            ".gitignore",
            "tools/wbca_debug/tests/test_native.py",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/reversing_truck_path_task.cpp",
            "tools/pnc_proto_mapper/test_config_schema_presence.py",
            "data/config/cfg_lat_plan.hpp",
            "Testing/reversing_truck_path_optimizer_test.cpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "tools/wbca_debug/static/app.js",
            "data/config/cfg_lat_plan.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "tools/wbca_debug/static/index.html",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "config/config_truck/config_truck_reverse/plan.yaml",
            "tools/wbca_debug/tests/test_server.py",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "tools/wbca_debug/server.py",
            "tools/wbca_debug/start_up.sh",
            "tools/wbca_debug/worker.cpp",
            "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp",
            "tools/wbca_debug/README.md",
            "replayer/scene_data/config_proto_codec.cpp",
            "tools/wbca_debug/stop_server.py",
            "Testing/reversing_path_wbca_test.cpp",
            "algorithm/wbca/reversing_truck_wbca_manager.hpp",
            "tools/wbca_debug/CMakeLists.txt",
            "config/config_truck/plan.yaml",
            "tools/wbca_debug/.gitignore",
            "algorithm/wbca/reversing_truck_wbca_manager.cpp",
            "tools/wbca_debug/tests/test_startup.py",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "tools/wbca_debug/static/style.css"
          ],
          "commitId" : "bf120db6bfe072f5b559374c753ec6df90fac77c",
          "timestamp" : 1791440247000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: add WBCA debug tool and truck reversing configuration\u000a\u000aAdd browser visualization and C++ optimizer replay with editable parameters and server startup management. Introduce the REVERSING_TRUCK scene and dedicated configuration with normal-parameter fallback, typed replay persistence, and regression coverage. Ignore local artifacts.\u000a",
          "date" : "2026-10-08 14:17:27 +0800",
          "id" : "bf120db6bfe072f5b559374c753ec6df90fac77c",
          "msg" : "feat: add WBCA debug tool and truck reversing configuration",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/reversing_truck_path_task.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/tests/test_native.py"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/worker.cpp"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/config_truck_reverse/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : ".gitignore"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/start_up.sh"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/plan.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/static/app.js"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reversing_path_wbca_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_config_schema_presence.py"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/static/index.html"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "Testing/reversing_truck_path_optimizer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/.gitignore"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/stop_server.py"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/server.py"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/tests/test_startup.py"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/README.md"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/tests/test_server.py"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/static/style.css"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/config/cfg_lat_plan.cpp"
          ],
          "commitId" : "941625f66f78deeb2c167af93984d7f2c5611ad3",
          "timestamp" : 1791440590000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: reversing wbca distance_thr 0.05\u000a",
          "date" : "2026-10-08 14:23:10 +0800",
          "id" : "941625f66f78deeb2c167af93984d7f2c5611ad3",
          "msg" : "fix: reversing wbca distance_thr 0.05",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/out_yard_junction_ec.cpp"
          ],
          "commitId" : "ab4897ce845172ae7aed8b857e36603dca37ce9a",
          "timestamp" : 1791440973000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 关闭大榭出场右转掉头终点右侧通道校准\u000a\u000a在右转掉头出场前和出场内阶段禁用终点右侧通道校准，覆盖此前按场区和终点车道位置启用的校准标志。\u000a",
          "date" : "2026-10-08 14:29:33 +0800",
          "id" : "ab4897ce845172ae7aed8b857e36603dca37ce9a",
          "msg" : "fix: 关闭大榭出场右转掉头终点右侧通道校准",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/wbca_debug/CMakeLists.txt",
            "algorithm/wbca/reversing_truck_wbca_manager.hpp",
            "tools/wbca_debug/plot_esdf_comparison.py",
            "algorithm/wbca/reversing_truck_wbca_manager.cpp",
            "tools/wbca_debug/README.md",
            "tools/wbca_debug/compare_ssep_esdf.cpp",
            "Testing/reversing_path_wbca_test.cpp"
          ],
          "commitId" : "1084b7392cc4b7b48e68e532845c75782e04ab75",
          "timestamp" : 1791447535000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: fill reversing WBCA obstacle-to-corridor gaps\u000a\u000aClose effective SSEP obstacle segments to the outward corridor boundary and retain the connected reference-side free region. Keep filled occupancy even where it overlaps the reference envelope, preserving source obstacles and clearing rules.\u000a\u000aAdd production SSEP-to-ESDF comparison and plotting tools, documentation, and regressions. Validated with distributed compilation and 46 passing WBCA tests.\u000a",
          "date" : "2026-10-08 16:18:55 +0800",
          "id" : "1084b7392cc4b7b48e68e532845c75782e04ab75",
          "msg" : "feat: fill reversing WBCA obstacle-to-corridor gaps",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/reversing_path_wbca_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/wbca_debug/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/plot_esdf_comparison.py"
            },
            {
              "editType" : "edit",
              "file" : "tools/wbca_debug/README.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/reversing_truck_wbca_manager.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/wbca_debug/compare_ssep_esdf.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/compact_replay_session.cpp",
            "source/ros_source_crane_info.cpp",
            "replayer/scene_data/compact_proto_codec.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "Testing/legacy_scene_importer_test.cpp",
            "data/obstacle/obstacle.hpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.cpp",
            "replayer/scene_data/compact_scene_archive_codec.cpp",
            "Testing/hmi_collision_render_test.cpp",
            "replayer/scene_data/versioned_compact_decoder.cpp",
            "plan/prepare/prepare_objs.cpp",
            "data/vehicle/crane_info.cpp",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "proto/obstacle_compact.proto",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "data/constrain/block_data.cpp",
            "proto/pnc_scene/compact_replay_input.proto",
            "Testing/planframe_compat_test.cpp",
            "Testing/crane_motion_history_test.cpp",
            "replayer/replayer_data_process/replayer_data_extraction.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "Testing/obstacle_detail_render_test.cpp",
            "replayer/scene_data/live_compact_ingress.cpp",
            "hmi/common/obstacle_details.hpp",
            "Testing/crane_lane_policy_test.cpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "replayer/scene_data/compact_proto_codec.cpp",
            "replayer/replayer_data_process/replayer_data_process.cpp",
            "Testing/pnc_case_cli_test.cpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.hpp",
            "replayer/scene_data/compatibility_gateway.hpp",
            "plan/prepare/prepare_objs.hpp",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "data/vehicle/crane_info.hpp",
            "Testing/live_compact_version_test.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "hmi/draw/draw_perception.cpp",
            "replayer/scene_data/versioned_compact_decoder.hpp",
            "tools/pnc_proto_mapper/sync_container_schema.py",
            "data/obstacle/obstacle.cpp",
            "replayer/scene_data/live_compact_ingress.hpp",
            "Testing/analysis_server_app_test.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "Testing/CMakeLists.txt",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "a2b8741034ea418943b6d1f0a9763741a5916f35",
          "timestamp" : 1791454218000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 完善桥吊动静先验关联与场景回放保存\u000a\u000a增加桥吊状态及方向输入、感知防抖与云端状态融合、唯一桥名绑定和 HMI 诊断。\u000a保留短时漏检运动证据并校验目标身份，修复地图桥腿投影和动静防护扩张。\u000aCompact 升级 encoding 5，增加桥坐标量化及云端相对时间，兼容读取 3/4/5 并隔离会话版本。\u000a\u000a验证：基础回归及策略/HMI/兼容测试、T711 绑定探针通过，pnc_node 与 pnc_replayer 编译通过。\u000a",
          "date" : "2026-10-08 18:10:18 +0800",
          "id" : "a2b8741034ea418943b6d1f0a9763741a5916f35",
          "msg" : "feat: 完善桥吊动静先验关联与场景回放保存",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/analysis_server_app_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/live_compact_ingress.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compatibility_gateway.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/crane_motion_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/legacy_scene_importer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/hmi_collision_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/live_compact_ingress.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/crane_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/crane_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_process.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/crane_lane_policy_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_scene_archive_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle_compact.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_container_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/obstacle_detail_render_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_objs.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/versioned_compact_decoder.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "add",
              "file" : "Testing/live_compact_version_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_crane_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_objs.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/replayer_data_extraction.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_replay_session.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/pnc_case_cli_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "hmi/common/obstacle_details.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/versioned_compact_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/planframe_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/live_bridge/pnc_live_web_bridge.cpp",
            "Testing/live_web_bridge_test.cpp"
          ],
          "commitId" : "bf94c08ac70847527cfcdc04a0b14b512ef9f38f",
          "timestamp" : 1791454219000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 回放会话切换时立即清除旧缓存和历史\u000a\u000a将 ingress 与上层固定帧、缓存及双路历史在同一会话边界清空。\u000a新会话首个 anchor 解码失败时，后续有效帧不再继承旧会话状态。\u000a增加在线和离线回归，验证旧帧不可访问及新帧使用空历史。\u000a",
          "date" : "2026-10-08 18:10:19 +0800",
          "id" : "bf94c08ac70847527cfcdc04a0b14b512ef9f38f",
          "msg" : "fix: 回放会话切换时立即清除旧缓存和历史",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/live_bridge/pnc_live_web_bridge.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_web_bridge_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/test_compact_numeric_leaves.py",
            "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md",
            "tools/pnc_proto_mapper/audit_compact_numeric_leaves.py",
            "replayer/scene_data/compact_numeric_leaf_contract.csv",
            "AGENTS.md",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "Taskfile.yml",
            "CMakeLists.txt"
          ],
          "commitId" : "acdd8c703edcb79ea4298d75955ec6136962a1c0",
          "timestamp" : 1791454219000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "chore: 增加 Compact 嵌套数值字段审计与编码规则\u000a\u000a递归检查 Compact schema 数值叶子和 message 引用边，冻结存量待审清单。\u000a新增字段或签名及可达范围变化必须显式审查，pending 不代表压缩验收完成。\u000a接入 Taskfile 和编译门禁，补充 9 项回归测试。\u000a统一字段级编码规则并将具体字段合同记录移入附录，精简操作手册。\u000a\u000a验证：check-generated、check-proto-breaking 和审计单元测试通过。\u000a",
          "date" : "2026-10-08 18:10:19 +0800",
          "id" : "acdd8c703edcb79ea4298d75955ec6136962a1c0",
          "msg" : "chore: 增加 Compact 嵌套数值字段审计与编码规则",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "AGENTS.md"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_numeric_leaf_contract.csv"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/audit_compact_numeric_leaves.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_compact_numeric_leaves.py"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp"
          ],
          "commitId" : "1fab5aecef20d30f12ddebb95fbd1e9c7187eade",
          "timestamp" : 1791464434000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: use readable timestamps for reversing WBCA snapshots\u000a",
          "date" : "2026-10-08 21:00:34 +0800",
          "id" : "1fab5aecef20d30f12ddebb95fbd1e9c7187eade",
          "msg" : "fix: use readable timestamps for reversing WBCA snapshots",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/path_optimization/reversing_truck_path_optimizer.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/wbca_debug/README.md",
            "tools/wbca_debug/static/app.js",
            "tools/wbca_debug/static/index.html"
          ],
          "commitId" : "c6d2c62428b7b2ea1bc71e6aa0823969d3c3d450",
          "timestamp" : 1791464446000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: display trajectory bounding boxes in WBCA debug viewer\u000a",
          "date" : "2026-10-08 21:00:46 +0800",
          "id" : "c6d2c62428b7b2ea1bc71e6aa0823969d3c3d450",
          "msg" : "feat: display trajectory bounding boxes in WBCA debug viewer",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/wbca_debug/static/index.html"
            },
            {
              "editType" : "edit",
              "file" : "tools/wbca_debug/README.md"
            },
            {
              "editType" : "edit",
              "file" : "tools/wbca_debug/static/app.js"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "plan/prepare/prepare_ogm.cpp",
            "plan/prepare/prepare_ogm.hpp",
            "Testing/keb_gate_filter_test.cpp"
          ],
          "commitId" : "733d4b8c0569aa43a9bbd21c0b101dd70fe47452",
          "timestamp" : 1791464869000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 按道路边界收窄 OGM 精细采样区域\u000a\u000a使用历史道路断面及规划扩宽范围生成连续掩码，按当前车辆位姿投影，\u000a加入保护带与栅格误差余量，减少直行时道路两侧高密度采样点。\u000a边界缺失、异常、端部及未覆盖路径保留原 12 m 路径带回退。\u000a覆盖判定在保护带膨胀前执行，避免道路外路径被误判为已覆盖。\u000a\u000a补充直道、弯道、位姿、异常边界、局部回退及上下层密度回归测试。\u000a分布式编译和 22 个相关测试通过；指定 bag 前 50 帧离线 A/B 复验通过。\u000a",
          "date" : "2026-10-08 21:07:49 +0800",
          "id" : "733d4b8c0569aa43a9bbd21c0b101dd70fe47452",
          "msg" : "feat: 按道路边界收窄 OGM 精细采样区域",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/keb_gate_filter_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_ogm.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/compact_proto_codec.cpp",
            "replayer/scene_data/compact_replay_session.cpp",
            "replayer/scene_data/compact_exact_numeric_codec.cpp",
            "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp",
            "Testing/compact_ssep_ec_geometry_test.cpp",
            "docs/pnc_algorithm_replay/compact_exact_numeric_validation.md",
            "Testing/compact_future_numeric_compat_test.cpp",
            "proto/pnc_scene/compact_exact_numeric.proto",
            "replayer/scene_data/compact_proto_codec.hpp",
            "replayer/scene_data/compact_snapshot_stream_decoder.cpp",
            "replayer/scene_data/compact_scene_archive_codec.cpp",
            "CMakeLists.txt",
            "replayer/scene_data/compact_exact_numeric_codec.hpp",
            "replayer/scene_data/compatibility_gateway.hpp",
            "replayer/scene_data/compact_ssep_ec_geometry_codec.hpp",
            "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md",
            "replayer/scene_data/versioned_compact_decoder.cpp",
            "Testing/compact_exact_numeric_test.cpp",
            "sink/ros_sink_snapshot_compact_scene.cpp",
            "Testing/scene_replay_foundation_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "Testing/live_compact_version_test.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "proto/pnc_scene/compact_replay_input.proto",
            "proto/pnc_scene/compact_scene.proto",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "Taskfile.yml",
            "tools/pnc_proto_mapper/test_exact_numeric_codegen.py",
            "replayer/scene_data/compact_ssep_ec_geometry_codec.cpp",
            "docs/pnc_algorithm_replay/compact_exact_numeric_coverage.csv",
            "replayer/scene_data/live_compact_ingress.cpp",
            "proto/CMakeLists.txt",
            "replayer/scene_data/compact_numeric_leaf_contract.csv",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md",
            "Testing/CMakeLists.txt",
            "tools/pnc_proto_mapper/generate_exact_numeric_codec.py",
            "replayer/scene_data/generated/compact_exact_numeric_visitor.hpp"
          ],
          "commitId" : "73b677e2e6a24f75328c27f72182986bf1f803f1",
          "timestamp" : 1791465116000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加 Compact 精确数值编码与 SSEP 几何压缩\u000a\u000a以静态生成的字段路径保存精确 float32、XOR 和相对时间列，保留未知列、生产帧基准及转发元数据。SSEP 几何按当前车体坐标分块量化，验证世界坐标误差不超过 2.5 mm。\u000a\u000awriter 升级为 encoding 7，reader 兼容 3 至 7；修复未知列重复解码递归及非法锚点污染 Live 上下文的问题。补齐字段合同、生成器门禁及 Recorded/Candidate 回归。\u000a\u000a验证：统一生成及 breaking 检查通过，分布式构建通过；470 项常规测试通过，真实 bag 前 50 帧精度和顺序/随机回放通过。\u000a",
          "date" : "2026-10-08 21:11:56 +0800",
          "id" : "73b677e2e6a24f75328c27f72182986bf1f803f1",
          "msg" : "feat: 增加 Compact 精确数值编码与 SSEP 几何压缩",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/compact_future_numeric_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_scene_archive_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/compact_exact_numeric_coverage.csv"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_exact_numeric_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/test_exact_numeric_codegen.py"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/compact_exact_numeric_validation.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/live_compact_version_test.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_ssep_ec_geometry_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_snapshot_compact_scene.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_exact_numeric_codec.cpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/generate_exact_numeric_codec.py"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_leaf_contract.csv"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_ssep_ec_geometry_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compatibility_gateway.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/pnc_scene/compact_exact_numeric.proto"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/compact_exact_numeric_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/live_compact_ingress.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_replay_session.cpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/generated/compact_exact_numeric_visitor.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/versioned_compact_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "Taskfile.yml"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/compact_numeric_encoding_rules.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "proto/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_snapshot_stream_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/compact_ssep_ec_geometry_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_scene.proto"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "docs/pnc_algorithm_replay/compact_bandwidth_boost_comparison_20261008.md",
            "tools/pnc_encoding_benchmark/main.cpp",
            "Testing/encoding_benchmark_test.cpp",
            "replayer/scene_data/encoding_benchmark.cpp",
            "replayer/scene_data/encoding_benchmark.hpp",
            "docs/pnc_algorithm_replay/compact_bandwidth_member_details_20261008.md"
          ],
          "commitId" : "45f4c073763271b91cd47c1f66031a03caf3d634",
          "timestamp" : 1791465139000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 完善 Boost 与 Compact 带宽对照\u000a\u000a对同一原始载荷分别统计 zlib 和 Zstd level 3 大小，避免压缩器差异混入序列化比较；修正 Boost binary archive 标签，并在 Compact 基准中编码 Common 精确数值列。\u000a\u000a增加统计不随计时迭代数变化的回归，记录最新 bag 前 50 帧的带宽组成、字段边际贡献和 SSEP 优化收益。相关测试及真实样本验证通过。\u000a",
          "date" : "2026-10-08 21:12:19 +0800",
          "id" : "45f4c073763271b91cd47c1f66031a03caf3d634",
          "msg" : "test: 完善 Boost 与 Compact 带宽对照",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.hpp"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/compact_bandwidth_boost_comparison_20261008.md"
            },
            {
              "editType" : "add",
              "file" : "docs/pnc_algorithm_replay/compact_bandwidth_member_details_20261008.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tools/pnc_proto_mapper/schema_lint.py",
            "tools/pnc_proto_mapper/test_exact_numeric_codegen.py",
            "tools/pnc_proto_mapper/audit_compact_numeric_leaves.py",
            "tools/pnc_proto_mapper/generate_exact_numeric_codec.py",
            "tools/pnc_proto_mapper/descriptor_compat.py"
          ],
          "commitId" : "94aa9badce3aa7df9845d38bc381aa62bee4efd9",
          "timestamp" : 1791508711000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 兼容 OTA 旧版 protobuf 的字段描述符\u000a\u000a统一兼容读取 proto3_optional，旧版运行时从 wire 字段恢复标记，避免代码生成和审计检查崩溃并保留 optional 语义。\u000a\u000a调整测试数据构造并覆盖旧版兼容分支；完整 check-generated 检查链及协议兼容检查通过。\u000a",
          "date" : "2026-10-09 09:18:31 +0800",
          "id" : "94aa9badce3aa7df9845d38bc381aa62bee4efd9",
          "msg" : "fix: 兼容 OTA 旧版 protobuf 的字段描述符",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/generate_exact_numeric_codec.py"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_exact_numeric_codegen.py"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/descriptor_compat.py"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/schema_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/audit_compact_numeric_leaves.py"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "replayer/scene_data/compact_proto_codec.cpp",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "proto/pnc_scene/compact_replay_input.proto",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "proto/config.proto",
            "data/config/cfg_ssep.cpp",
            "data/ssep/forward_ec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "data/config/cfg_ssep.hpp",
            "Testing/scene_replay_foundation_test.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "config/config_truck/config_truck_reverse/ssep.yaml",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "aa3bfa60570332cfb0c9bf6719906a51bd605c2b",
          "timestamp" : 1791513118000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: configure reverse-pickup goal heading offsets\u000a",
          "date" : "2026-10-09 10:31:58 +0800",
          "id" : "aa3bfa60570332cfb0c9bf6719906a51bd605c2b",
          "msg" : "feat: configure reverse-pickup goal heading offsets",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_ssep.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_ssep.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_replay_input.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/config_truck_reverse/ssep.yaml"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "data/ssep/forward_ec.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_workflow.md",
            "config/config_truck/config_truck_reverse/ssep.yaml"
          ],
          "commitId" : "3cd7db960d7c2210d84a027b4522156a4e5ca1c0",
          "timestamp" : 1791517639000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: apply goal heading offsets to multi-segment parking\u000a",
          "date" : "2026-10-09 11:47:19 +0800",
          "id" : "3cd7db960d7c2210d84a027b4522156a4e5ca1c0",
          "msg" : "fix: apply goal heading offsets to multi-segment parking",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_workflow.md"
            },
            {
              "editType" : "edit",
              "file" : "config/config_truck/config_truck_reverse/ssep.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hmi/draw/draw_perception.cpp",
            "Testing/CMakeLists.txt",
            "Testing/cloud_obstacle_label_test.cpp"
          ],
          "commitId" : "a01f5c2ccda9de3ea28485564a5e30811279d96b",
          "timestamp" : 1791525306000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复无界面模式下桥吊标注的 Qt 字体崩溃风险\u000a\u000a云端和本地界面统一复用 OpenCV 绘制虚拟桥吊标注，移除 QPainter 及其 GUI 字体依赖。使用 ASCII 标注显示障碍物 ID、绑定状态、动静状态和停止确认状态。\u000a\u000a新增独立进程回归，覆盖无 application、QCoreApplication 和 QApplication 三种环境，以及虚拟岸桥、场桥、空集合和其他障碍物。三项 CTest 通过，pnc_node 分布式构建通过。\u000a",
          "date" : "2026-10-09 13:55:06 +0800",
          "id" : "a01f5c2ccda9de3ea28485564a5e30811279d96b",
          "msg" : "fix: 修复无界面模式下桥吊标注的 Qt 字体崩溃风险",
          "paths" : [
            {
              "editType" : "add",
              "file" : "Testing/cloud_obstacle_label_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/vehicle/deviation_status.cpp",
            "Testing/scene_replay_foundation_test.cpp"
          ],
          "commitId" : "0a71c2d4aecbb9034ed993a33df9bb11b5aa71ea",
          "timestamp" : 1791530310000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: restrict straightening triggers to final reversing segment\u000a",
          "date" : "2026-10-09 15:18:30 +0800",
          "id" : "0a71c2d4aecbb9034ed993a33df9bb11b5aa71ea",
          "msg" : "fix: restrict straightening triggers to final reversing segment",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/vehicle/deviation_status.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/CMakeLists.txt",
            "data/ssep/forward_ec.cpp",
            "Testing/bulk_goal_obstacle_filter_test.cpp"
          ],
          "commitId" : "2ae401026d8e4d92144f624531ffe6209dc328b1",
          "timestamp" : 1791616627000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 过滤 BulkIn 固定终点重叠障碍物\u000a\u000a根据现有场景、目标引导线和末端直线距离判断终点是否固定，\u000a过滤与终点完整头挂车身重叠的静态对象，并关联过滤对应头挂。\u000a关联仅扩展一层，保留可调整终点场景的对象，避免跨帧残留障碍标志。\u000a\u000a增加 15 项回归测试，覆盖车身姿态、头挂关联及固定终点判断边界。\u000a分布式编译和过滤回归测试通过。\u000a",
          "date" : "2026-10-10 15:17:07 +0800",
          "id" : "2ae401026d8e4d92144f624531ffe6209dc328b1",
          "msg" : "fix: 过滤 BulkIn 固定终点重叠障碍物",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/bulk_goal_obstacle_filter_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/tractor_trailer_kinematic_weight_test.cc",
            "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h",
            "ssep/keb_optimizer/keb_problem.cc"
          ],
          "commitId" : "6251c424ee411adf5b3af4a815f18b0df524d036",
          "timestamp" : 1791617122000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 约束牵引车停车路径的端点控制曲率\u000a\u000a对每个行驶方向段增加四点端点曲率残差，与控制路径首尾外推公式一致，避免三点曲率合规但导出控制曲率超限。\u000a保留换向点共用及固定尾段边界约束，覆盖非均匀采样、正负曲率和自动微分回归。\u000a\u000a验证：128 项运动学与曲率测试通过，现场失败帧及相邻场景回放通过。\u000a",
          "date" : "2026-10-10 15:25:22 +0800",
          "id" : "6251c424ee411adf5b3af4a815f18b0df524d036",
          "msg" : "fix: 约束牵引车停车路径的端点控制曲率",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/keb_problem.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/tractor_trailer_kinematic_weight_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/keb_optimizer/cost_features/parking_geometric_curvature_constraint.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/bounded_priority_queue_test.cc",
            "ssep/coarse_search/bounded_priority_queue.h",
            "ssep/test/CMakeLists.txt"
          ],
          "commitId" : "d48112ba60721d6e10f0df8d4e3353e25a6c50bb",
          "timestamp" : 1791617138000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 稳定 GPU 搜索候选队列的优先级顺序\u000a\u000a有界队列的读取、删除和淘汰统一遵循搜索器传入的比较器，同代价按节点生成顺序处理，避免哈希表遍历顺序改变搜索分支。\u000a补充等代价排序、自定义比较器及单项与批量操作一致性测试。\u000a\u000a验证：RTX 4060 上目标帧重复 10 次均为一前一倒，输出路径完全一致；队列回归通过。\u000a",
          "date" : "2026-10-10 15:25:38 +0800",
          "id" : "d48112ba60721d6e10f0df8d4e3353e25a6c50bb",
          "msg" : "fix: 稳定 GPU 搜索候选队列的优先级顺序",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/bounded_priority_queue_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bounded_priority_queue.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/bidirectional_candidate_validation_test.cc",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
          ],
          "commitId" : "7a597f7c839fda04da7c8b747b8350013e0cfb8b",
          "timestamp" : 1791617202000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 优先完成停车单次换向搜索再回退多段调整\u000a\u000a一次换向搜索在单侧队列耗尽后允许另一侧继续连接已访问节点；参考点附近搜索失败后先放宽换向位置，再启用多段调整。\u000a保留方向、连接碰撞及整段验收，并补充超时与匹配拒绝分类日志。\u000a覆盖三种队列、两种扩展策略和任一侧先耗尽的回归，以及参考位置放宽后仍只换向一次的场景。\u000a",
          "date" : "2026-10-10 15:26:42 +0800",
          "id" : "7a597f7c839fda04da7c8b747b8350013e0cfb8b",
          "msg" : "fix: 优先完成停车单次换向搜索再回退多段调整",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/bidirectional_candidate_validation_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/parking_history_collision_test.cc",
            "ssep/test/CMakeLists.txt",
            "ssep/scenarios/stitching_replanner.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/ssep_planner.cc"
          ],
          "commitId" : "067d54ce4ae9e7baa511b58e0a94333a5c953b03",
          "timestamp" : 1791617213000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 换向后优先接续有效倒车路径并保留调整回退\u000a\u000a有效纯倒车历史先在当前环境下重新优化验收，失败后优先纯倒车搜索，再按配置允许前进调整；各尝试共享请求截止时间并保留参考引导线。\u000a历史路径补验显式搜索与优化前方包络，保持完整运动学、端点、曲率和扫掠碰撞检查。\u000a补充当前障碍变化、重复规划、禁止调整和截止时间回归。\u000a",
          "date" : "2026-10-10 15:26:53 +0800",
          "id" : "067d54ce4ae9e7baa511b58e0a94333a5c953b03",
          "msg" : "fix: 换向后优先接续有效倒车路径并保留调整回退",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/parking_history_collision_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/stitching_replanner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "AGENTS.md"
          ],
          "commitId" : "6f24df7ce3639516a96dd06b98fd69e734a3f9a3",
          "timestamp" : 1791617221000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "docs: 记录 GPU 测试服务器及验证约定\u000a\u000a记录已授权的 GPU 测试入口、独立工作目录要求和 CPU/GPU 后端结果区分，凭据不进入仓库。\u000a",
          "date" : "2026-10-10 15:27:01 +0800",
          "id" : "6f24df7ce3639516a96dd06b98fd69e734a3f9a3",
          "msg" : "docs: 记录 GPU 测试服务器及验证约定",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "AGENTS.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/lat_decider/path_bounds_decider.cpp",
            "Testing/path_bounds_reference_test.cpp",
            "Testing/pjpo_bag_regression_test.cpp",
            "Testing/CMakeLists.txt",
            "tasks/deciders/lat_decider/path_bounds_decider.hpp"
          ],
          "commitId" : "35331d19db1606b201da8507d1bc1ea9dba5ce23",
          "timestamp" : 1791630063000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 保留正向 DP 参考并约束历史边界融合\u000a\u000a正向 PJPO 使用 DP 已选参考，避免通道变宽时被边界中点牵引横移；短缺或无效 DP 保留引导线及通道中点回退。\u000a将历史边界投影到当前引导线法向后融合，只收紧当前边界，并跳过方向变化、无效或不相交历史。\u000a\u000a验证：17 项路径参考及边界专项测试通过；249 帧现场记录输入的 CPU DP/PJPO 独立帧对照均求解成功。新增可选 bag 回归入口，结果不作为闭环验证。\u000a",
          "date" : "2026-10-10 19:01:03 +0800",
          "id" : "35331d19db1606b201da8507d1bc1ea9dba5ce23",
          "msg" : "fix: 保留正向 DP 参考并约束历史边界融合",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/path_bounds_reference_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/lat_decider/path_bounds_decider.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/pjpo_bag_regression_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/lat_decider/path_bounds_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/CMakeLists.txt",
            "ssep/test/parking_search_stages_test.cc",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h",
            "ssep/scenarios/search_guide_fallback_planner.h",
            "ssep/ssep_planner.cc"
          ],
          "commitId" : "a384e9210a1979458ac5b374906e9f6aa7308cb9",
          "timestamp" : 1791630223000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 剩余停车优先纯倒车并统一历史回退预算\u000a\u000a无途经点的剩余停车依次尝试带引导纯倒车、普通纯倒车和允许前进调整的兜底，缺少历史时同样生效。构建、搜索与优化共享请求绝对截止时间。\u000a历史重优化最多占三分之一预算；失败后按剩余预算重建阶段，避免搜索尚未开始就过期。保留显式禁止调整、OrderedVia 和碰撞验收语义。\u000a\u000a验证：停车相关 114 项测试通过；六帧 GPU 版本回放成功，18:04:32 从三段变为一段倒车。剩余倒车分支实际采用 CPU 搜索。预算分配仍可能压缩复杂调整场景的搜索时间。\u000a",
          "date" : "2026-10-10 19:03:43 +0800",
          "id" : "a384e9210a1979458ac5b374906e9f6aa7308cb9",
          "msg" : "fix: 剩余停车优先纯倒车并统一历史回退预算",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/search_guide_fallback_planner.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/parking_search_stages_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_reverse_priority_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/ssep_planner.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "ssep/test/ssep_planner_test.cc",
            "ssep/test/bidirectional_candidate_validation_test.cc",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
          ],
          "commitId" : "e4d57b5c54ce7716fb347acefd0bffb296ec6440",
          "timestamp" : 1791630226000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 在单次停车换向中择优主挂车姿态\u000a\u000a以输入途经点主挂车朝向及换向附近曲率变化评价粗搜索候选，限定额外时间、迭代和候选数量；多次调整兜底仍沿用首解策略。\u000a评分前排除几何换向无效或绕圈路径，超时保留已验证粗候选，停止条件满足后不再扩展当前批次；单树终点命中时清理旧双树连接。\u000a\u000a验证：114 项停车测试通过，六帧 GPU 版本回放及独立碰撞、机械曲率检查通过。18:01:54 实际 GPU 换向夹角从约 14.6 度降至 2.4 度，保留一前一倒；11:32:46 保持原四次换向。未提高平滑权重或放宽物理验收。\u000a",
          "date" : "2026-10-10 19:03:46 +0800",
          "id" : "e4d57b5c54ce7716fb347acefd0bffb296ec6440",
          "msg" : "fix: 在单次停车换向中择优主挂车姿态",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/bidirectional_candidate_validation_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h",
            "ssep/coarse_search/bounded_priority_queue.h",
            "ssep/test/bounded_priority_queue_test.cc",
            "ssep/test/bidirectional_candidate_validation_test.cc",
            "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
          ],
          "commitId" : "dea1739cc22e2186ef4ed491af976e6193fed47a",
          "timestamp" : 1791792781000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 为双向 Beam 搜索保留可恢复候选\u000a\u000a增加可选备用队列，在活动队列耗尽或快速尝试期限到达时恢复未扩展候选。\u000a恢复沿用原搜索图、已访问状态及总截止时间，默认 Beam 行为保持不变。\u000a覆盖同格更新、终点优先、清理生命周期和不重复根扩展等回归测试。\u000a",
          "date" : "2026-10-12 16:13:01 +0800",
          "id" : "dea1739cc22e2186ef4ed491af976e6193fed47a",
          "msg" : "feat: 为双向 Beam 搜索保留可恢复候选",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/bounded_priority_queue.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/bounded_priority_queue_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/bidirectional_candidate_validation_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc",
            "ssep/scenarios/parking_reference_region.h",
            "ssep/test/ssep_planner_test.cc",
            "data/ssep/forward_ec.cpp",
            "ssep/test/trailer_search_guide_test.cc",
            "ssep/coarse_search/evaluator/trailer_search_guide.h",
            "ssep/coarse_search/evaluator/trailer_search_guide.cc",
            "ssep/common/utils/search_guide_body_sweep.h",
            "ssep/scenarios/scenario_planner_factory.h",
            "ssep/scenarios/search_guide_fallback_planner.h",
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
          ],
          "commitId" : "00aa2bf3aa1f4c22e17dce1aa96c606508df2be0",
          "timestamp" : 1791792804000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 优化停车引导匹配并约束换向搜索\u000a\u000a在配置的换向区域内匹配引导入口，并校验最终任务换向位置。\u000a仅过滤与本次匹配引导车身扫掠范围重叠的静态对象，过滤后要求阶段与引导一致。\u000a按作业约定忽略静态行人；换向姿态采用相对参考的软排序，保留必要夹角。\u000aGPU 简单搜索使用有预算上限的 Beam 候选恢复及完整队列兼容兜底。\u000a引导与普通分支比较共享搜索、优化和验收截止时间，到期保留已有可行解。\u000a\u000a验证：PNC 与 GPU 回放编译通过，56 项相关 C++ 测试通过。\u000a当前配置 21 例通过 18 例，3 个既有问题保持记录；35 个原输入均有解且段数与坐标不变。\u000a",
          "date" : "2026-10-12 16:13:24 +0800",
          "id" : "00aa2bf3aa1f4c22e17dce1aa96c606508df2be0",
          "msg" : "fix: 优化停车引导匹配并约束换向搜索",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/common/utils/search_guide_body_sweep.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_search_guide.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/trailer_search_guide_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/trailer_search_guide.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/scenarios/parking_reference_region.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/scenario_planner_factory.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/search_guide_fallback_planner.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/ssep_planner_test.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_guide_filtered_gpu_manifest.tsv",
            "ssep/test/local_regression/tt_recent_parking_quality.py",
            "ssep/test/local_regression/tt_recent_parking_adjustment_quality.json",
            "ssep/test/local_regression/tt_recent_parking_cases.json",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/test_configured_regression.py",
            "ssep/test/local_regression/run_ssep_regression.py",
            "ssep/test/local_regression/test_recent_regression_backend.py",
            "ssep/test/local_regression/test_remote_replay_cli.py",
            "ssep/test/local_regression/tt_recent_parking_two_segments_quality.json",
            "ssep/test/local_regression/tt_recent_parking_configured_gpu_manifest.tsv",
            "ssep/test/local_regression/tt_recent_parking_gpu_manifest.tsv",
            "ssep/test/local_regression/test_tt_recent_parking_quality.py",
            "ssep/test/local_regression/tt_recent_parking_cpu_manifest.tsv",
            "ssep/test/local_regression/test_tt_parking_regression.py",
            "ssep/test/local_regression/tt_recent_parking_pure_reverse_quality.json",
            "ssep/test/local_regression/tt_recent_parking_cusp_cpu_quality.json",
            "ssep/test/local_regression/tt_recent_parking_cusp_gpu_quality.json",
            "ssep/test/local_regression/remote_replay_cli.py",
            "ssep/test/local_regression/tt_current_15m_input_overlay.json"
          ],
          "commitId" : "c5759f0ea4257941b03b86f319ec01f04396fc49",
          "timestamp" : 1791792878000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 固化停车场景回归并完善远端超时清理\u000a\u000a新增 CPU、GPU 和当前 15 米配置清单，原始输入引用指定 NAS 回归目录。\u000a显式记录配置覆盖及输入哈希，校验实际搜索后端、新策略日志和终点航向。\u000a远端回放使用独立进程组与截止时间，覆盖传输超时、取消及子孙进程清理。\u000a本地执行器有界清理进程组，避免继承输出管道导致超时后永久等待。\u000a记录场景质量、已知失败及归档路径，不放宽原有验收条件。\u000a\u000a验证：Python 运行 129 项测试，1 项因缺少本地数据跳过，其余通过。\u000a21 例当前配置与35例原始输入均完成 GPU 服务器对照，实际后端分别记录。\u000a",
          "date" : "2026-10-12 16:14:38 +0800",
          "id" : "c5759f0ea4257941b03b86f319ec01f04396fc49",
          "msg" : "test: 固化停车场景回归并完善远端超时清理",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_remote_replay_cli.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/remote_replay_cli.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_cusp_gpu_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_cpu_manifest.tsv"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_cusp_cpu_quality.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/run_ssep_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_cases.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_gpu_manifest.tsv"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_recent_regression_backend.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_tt_parking_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_configured_regression.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_guide_filtered_gpu_manifest.tsv"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_two_segments_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_pure_reverse_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_tt_recent_parking_quality.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_current_15m_input_overlay.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_adjustment_quality.json"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/tt_recent_parking_configured_gpu_manifest.tsv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
          ],
          "commitId" : "f399a832e9fdcc31eda810061591a7a15d85f385",
          "timestamp" : 1791797691000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 补充停车兼容搜索的起点半曲率采样\u000a\u000a在引导匹配且限制换向范围的 GPU 完整队列重试中，将起点前进曲率从三档补充为五档，改善离散采样对初始航向的敏感性。搜索结束后清除临时采样器，保持后续扩展、碰撞验收和总搜索预算。\u000a\u000a22:23:50 场景在当前 15 米配置下由五段降为一前一倒，换向夹角约 1.26 度。24 例配置回归无新增失败，保留三例既有失败；相关 C++ 和 Python 测试及 PNC、GPU 回放编译通过。\u000a",
          "date" : "2026-10-12 17:34:51 +0800",
          "id" : "f399a832e9fdcc31eda810061591a7a15d85f385",
          "msg" : "fix: 补充停车兼容搜索的起点半曲率采样",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/test/local_regression/tt_recent_parking_configured_gpu_manifest.tsv",
            "ssep/test/local_regression/tt_recent_parking_cases.json",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/test_configured_regression.py",
            "ssep/test/local_regression/tt_recent_parking_gpu_manifest.tsv"
          ],
          "commitId" : "e63f42ff881e1ab34895c79561c80c52fbd814be",
          "timestamp" : 1791797708000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 固化津西夜间停车场景及起点采样回归\u000a\u000a新增 22:50:56、22:51:50 和 22:23:50 的原始文件来源及哈希，固定当前配置套件的两段、单段倒车和连续单换向验收要求。原始数据引用持久 NAS 目录。\u000a\u000a配置套件扩为 24 例，21 例质量通过、23 例搜索成功，三例既有失败保留。文档记录路径净空变化、GPU 实际执行后端及结果归档位置，并明确异常例的原始参数不属于已修复验收范围。\u000a",
          "date" : "2026-10-12 17:35:08 +0800",
          "id" : "e63f42ff881e1ab34895c79561c80c52fbd814be",
          "msg" : "test: 固化津西夜间停车场景及起点采样回归",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_recent_parking_cases.json"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/test_configured_regression.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_recent_parking_configured_gpu_manifest.tsv"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/tt_recent_parking_gpu_manifest.tsv"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "ssep/offboard/servers/scene_vis_server.cc",
            "ssep/offboard/servers/scene_audit_html.h",
            "ssep/offboard/servers/scene_vis_html_template.cc",
            "ssep/test/local_regression/README.md",
            "ssep/test/local_regression/test_scene_audit.py",
            "ssep/test/local_regression/test_scene_audit_ui.py",
            "ssep/offboard/servers/scene_audit.h"
          ],
          "commitId" : "34e4130ef1a4f64b5b09047a3504b1123540b0a3",
          "timestamp" : 1791803196000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 增加 SSEP 全天场景巡检与多条件筛选界面\u000a\u000a在可视化服务中增加目录巡检入口，按实际场景类型分类，支持多类别、状态、时间、换向次数、夹角及关键词组合筛选。逐例保留失败证据、未知状态与覆盖范围，复用嵌入模式查看完整路径。\u000a\u000a支持导出所选原始场景及来源清单，供本地 skill 深入分析；车端仅执行只读初筛。增加独立端口启动选项、缺失输入和异常文件保护，以及接口、筛选、分析包和嵌入模式测试。\u000a\u000a验证：275 个现场场景完成初筛；可视化程序编译通过，13 项相关测试及真实浏览器筛选与路径展示检查通过。\u000a",
          "date" : "2026-10-12 19:06:36 +0800",
          "id" : "34e4130ef1a4f64b5b09047a3504b1123540b0a3",
          "msg" : "feat: 增加 SSEP 全天场景巡检与多条件筛选界面",
          "paths" : [
            {
              "editType" : "add",
              "file" : "ssep/offboard/servers/scene_audit_html.h"
            },
            {
              "editType" : "add",
              "file" : "ssep/offboard/servers/scene_audit.h"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_html_template.cc"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_scene_audit_ui.py"
            },
            {
              "editType" : "add",
              "file" : "ssep/test/local_regression/test_scene_audit.py"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/scene_vis_server.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/local_regression/README.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/decision/obstacle_decision.hpp",
            "tasks/plan/keb_utils.cpp",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "data/boundary/driving_corridor.cpp",
            "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md",
            "data/obstacle/decision/obstacle_decision.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/boundary/driving_corridor_test.cpp"
          ],
          "commitId" : "f08a4edd489ccc91c4ad2797d5d25a2ad8bca142",
          "timestamp" : 1791808313000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复障碍物与凸包切换导致的绕行占用中断\u000a\u000a复用静止证据缓存，在 obj、TYPE_CLUSTER 和感知 ID 切换时保留当前观测与固定历史区域的交集。\u000a支持拆框、合框的多片占用续期，DP 与 KEB 分片消费；严格的一对一策略恢复和未初始化限制保持独立。\u000a复用凸包 tracker 的运动确认迟滞，并处理量化后的微小凹角；运动冲突同时禁止旧缓存续期和新缓存重建。\u000a补充真实现场几何、运动撤销、缓存生命周期及 DP/KEB 回归，同步缓存合同说明与生成审计指纹。\u000a\u000a验证：211 项决策、走廊和 KEB 测试通过，生成文件与 Proto 兼容性检查通过。\u000a",
          "date" : "2026-10-12 20:31:53 +0800",
          "id" : "f08a4edd489ccc91c4ad2797d5d25a2ad8bca142",
          "msg" : "fix: 修复障碍物与凸包切换导致的绕行占用中断",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/compact_driving_corridor_restore_test.cpp"
          ],
          "commitId" : "4b77e7e1763020ab188ac2d24fe674b3fc0d8bbd",
          "timestamp" : 1791808328000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "test: 增加静止占用跨帧续接的场景回归\u000a\u000a顺序重算时从历史推进障碍物决策和 runtime cluster tracker，避免每帧录制缓存掩盖续接问题。\u000a增加帧范围选择、指定静止锚点逐帧续期断言，以及缓存、运动证据和占用片诊断输出。\u000a使用现场 bag 与精确津西地图验证问题区间 246 帧，锚点持续续期且无占用中断。\u000a该入口保留其他录制规划输入，用于局部决策和边界回归，不作为完整闭环验证。\u000a",
          "date" : "2026-10-12 20:32:08 +0800",
          "id" : "4b77e7e1763020ab188ac2d24fe674b3fc0d8bbd",
          "msg" : "test: 增加静止占用跨帧续接的场景回归",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/compact_driving_corridor_restore_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/decision/obstacle_decision.cpp",
            "data/obstacle/decision/obstacle_decision_test.cpp"
          ],
          "commitId" : "7a56b34c30768cc83b9987c83da571d0d30351c4",
          "timestamp" : 1791811848000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复静止绕行证据匹配中的非凸轮廓崩溃\u000a\u000a统一校验 cluster 观测与跟踪轮廓，在计算 IoU 前重建非凸轮廓的凸包，\u000a并检查凸性、有限坐标和有效面积，避免 ComputeOverlap 断言退出。\u000a无效轮廓跳过静止证据匹配并限频记录，保留成熟度、IoU 阈值及唯一匹配约束。\u000a\u000a补充观测、跟踪及双方非凸，以及空轮廓、零面积、NaN、Inf 回归。\u000a验证：29 项静止绕行证据测试通过；津西 AT001 复现 bag 修复前触发同一断言，\u000a修复后全部 610 帧 CPU 障碍物决策重算通过；pnc_node 构建通过。\u000a",
          "date" : "2026-10-12 21:30:48 +0800",
          "id" : "7a56b34c30768cc83b9987c83da571d0d30351c4",
          "msg" : "fix: 修复静止绕行证据匹配中的非凸轮廓崩溃",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/obstacle/ogm.cpp",
            "Testing/ogm_distance_equivalence_test.cpp",
            "data/boundary/driving_corridor.cpp",
            "data/obstacle/ogm.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/generated/state_schema_inputs.json",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "data/boundary/driving_corridor_test.cpp"
          ],
          "commitId" : "b497f7f479b7d1322a192cb791e6ad9bf6371dd5",
          "timestamp" : 1791812078000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修复侧避栅格越界导致的走廊末端假收缩\u000a\u000a按完整走廊扫描范围和道路墙扩展独立侧避栅格，并重画原始占用；\u000a修正默认栅格宽度计算，避免转弯后走廊超出原感知范围。\u000a距离与来源查询统一检查覆盖范围，图外返回 0/NONE，停止重复读取边缘道路墙。\u000a扩容前检查像素索引及面积，异常几何清空当前图，避免溢出及旧图残留。\u000a\u000a补充四向扩容、原图外真实点云/实体占用、异常几何和查询边界回归；\u000a同步 OGM 头文件注释对应的生成审计指纹，不改变序列化字段。\u000a\u000a验证：68 槽位 Icecream 集群编译通过；216 项走廊测试和 19 项 OGM/恢复测试通过。\u000aAT001 2026-10-11 场景 960 帧 CPU 走廊/DP 回放通过；截图帧末端 27 个断面\u000a假分隔消失，s=116～125 m 的真实障碍约束保持一致。\u000a",
          "date" : "2026-10-12 21:34:38 +0800",
          "id" : "b497f7f479b7d1322a192cb791e6ad9bf6371dd5",
          "msg" : "fix: 修复侧避栅格越界导致的走廊末端假收缩",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/state_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ogm_distance_equivalence_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/ssep/forward_ec.cpp",
            "Testing/bulk_goal_obstacle_filter_test.cpp"
          ],
          "commitId" : "42db84b5c336772d0bbac5ebc3178d1c6587182d",
          "timestamp" : 1791817391000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 防止前向搜索障碍过滤触发退化多边形崩溃\u000a\u000a前向搜索直接过滤聚类障碍，避免使用其可能退化的包围盒。对其余候选静态障碍在重叠过滤前统一校验尺寸、有限坐标和实际面积；无效时记录限频诊断并拒绝本轮环境构建，避免断言退出或误删实体障碍。\u000a\u000a补充聚类过滤、零尺寸、非有限坐标、面积阈值、大坐标退化及失败恢复回归。项目分布式构建通过，BulkGoalObstacleFilterTest 的 22 项测试全部通过。\u000a",
          "date" : "2026-10-12 23:03:11 +0800",
          "id" : "42db84b5c336772d0bbac5ebc3178d1c6587182d",
          "msg" : "fix: 防止前向搜索障碍过滤触发退化多边形崩溃",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/bulk_goal_obstacle_filter_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "tasks/deciders/long_decider/constrain_decider.cpp"
          ],
          "commitId" : "702c7f224ec69a8214a30645c1874c33f1bff59e",
          "timestamp" : 1791817611000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 修正倒车对象停车线位置偏移\u000a\u000a在 CreateStGraphConstrain 中按路径方向选择车头或车尾偏移，\u000a修正倒车对象停车线仍使用车头偏移导致的位置错误。\u000a沿用已有匹配点计算与 HMI 绘制流程，保留负停车余量和路径边界检查。\u000a\u000a验证：pnc_node、pnc_replayer 分布式编译通过；\u000aobstacle_stop_constraint_stabilizer_test 回归通过。\u000a",
          "date" : "2026-10-12 23:06:51 +0800",
          "id" : "702c7f224ec69a8214a30645c1874c33f1bff59e",
          "msg" : "fix: 修正倒车对象停车线位置偏移",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/plan/cloud_trajectory.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/config/cfg_env_const.hpp",
            "Testing/CMakeLists.txt",
            "Testing/cloud_trajectory_test.cpp"
          ],
          "commitId" : "61c6c6cc095a165dc8ac730fb4338b2fd6238a64",
          "timestamp" : 1791861603000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 云端短轨迹平滑补接引导线\u000a\u000a保持代码默认长度为 64 米，按配置目标长度延伸不足的云端轨迹。\u000a使用五次曲线衔接位置、切向和曲率，按几何弧长插值，支持倒车并保留停车限长。\u000a修正挂车配对点插值并续算延长段航向；当前位置兜底、无效数据和生成失败不保留补接结果。\u000a回退时清空历史车道与长度信息，刷新配置头文件对应的序列化审计摘要。\u000a\u000a验证：19 项轨迹生成回归通过；使用 Icecream 三节点、68 槽编译。\u000a",
          "date" : "2026-10-13 11:20:03 +0800",
          "id" : "61c6c6cc095a165dc8ac730fb4338b2fd6238a64",
          "msg" : "feat: 云端短轨迹平滑补接引导线",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/plan/cloud_trajectory.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_env_const.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "Testing/cloud_trajectory_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "sink/ros_sink_cloud_trajectory.hpp",
            "Testing/CMakeLists.txt",
            "sink/ros_sink_cloud_trajectory.cpp",
            "Testing/cloud_search_indices_test.cpp"
          ],
          "commitId" : "5f32e34a4aff5812353716ac70ae4e18fde3571a",
          "timestamp" : 1791861628000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "feat: 上报 SSEP 搜索起终点的云端轨迹下标\u000a\u000a使用 reserved_uint8s[0/1] 保存当前搜索起终点在主云端轨迹中的下标。\u000a255 表示无效，254 表示已驶过、超出展示范围或超过可编码下标范围。\u000a按实际发布坐标匹配，结合 ego 位置与完整引导线处理历史保留点、倒车及 U 形弯道越界。\u000a保护 float32 边界、无效消息和主备轨迹分隔，并清除失效搜索留下的旧下标。\u000a\u000a验证：14 项下标编码回归通过；完整 33 项专项回归通过。\u000a",
          "date" : "2026-10-13 11:20:28 +0800",
          "id" : "5f32e34a4aff5812353716ac70ae4e18fde3571a",
          "msg" : "feat: 上报 SSEP 搜索起终点的云端轨迹下标",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_cloud_trajectory.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/cloud_search_indices_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_cloud_trajectory.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/CMakeLists.txt",
            "Testing/median_filter_test.cpp",
            "math/filter/median_filter.hpp"
          ],
          "commitId" : "810084baed68775234dd2852410f72b7bab54596",
          "timestamp" : 1791870301000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 清理中值滤波器重置时遗留的删除记录\u000a\u000a重置 DualHeap 时同步清空 delayed_，避免历史删除标记误删新窗口样本，造成滤波结果错误及空堆访问风险。\u000a\u000a新增独立回归测试，覆盖重置后重复样本、跨帧复制、反复重置恢复及不同窗口的连续输入，并逐帧对照排序窗口中值。原实现对照用例失败，修复后 4 项测试通过，pnc_node 分布式构建通过。\u000a",
          "date" : "2026-10-13 13:45:01 +0800",
          "id" : "810084baed68775234dd2852410f72b7bab54596",
          "msg" : "fix: 清理中值滤波器重置时遗留的删除记录",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "math/filter/median_filter.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/median_filter_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "tasks/plan/keb_utils.cpp",
            "data/obstacle/decision/obstacle_decision.hpp",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "data/obstacle/decision/obstacle_decision.cpp"
          ],
          "commitId" : "c3109a22f4f6b3aac46840c71d0580f26e76614d",
          "timestamp" : 1791875299000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
            "fullName" : "wuyanjun110"
          },
          "authorEmail" : "wuyanjun110@126.com",
          "comment" : "fix: 排除 KEB 的 cut-in 障碍物实体框\u000a\u000aKEB 障碍物准入复用普通走廊筛选，移除 cut-in 对象的特殊准入，避免切入让速场景施加横向实体框约束。\u000a\u000a更新注释及头文件审计指纹，补充历史绕行承诺、成熟度旁路和退出 cut-in 后恢复准入的回归断言。分布式编译通过，43 项相关回归测试通过。\u000a",
          "date" : "2026-10-13 15:08:19 +0800",
          "id" : "c3109a22f4f6b3aac46840c71d0580f26e76614d",
          "msg" : "fix: 排除 KEB 的 cut-in 障碍物实体框",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.hpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "data/vehicle/related_offset.hpp",
            "proto/offline_capture.proto",
            "Testing/load_snap_data_compat_test.cpp",
            "data/decide/decide_reaction.hpp",
            "data/app/cmd/cmd_pover.hpp",
            "CMakeLists.txt",
            "math/piecewise_jerk/piecewise_jerk_traj.hpp",
            "data/app/cmd/cmd_update_config.hpp",
            "data/vehicle/localization_estimate.hpp",
            "algorithm/wbca/wbca_failure_csv.cpp",
            "math/curve1d/curve1d.hpp",
            "data/plan/start_point_data.cpp",
            "math/curve1d/cubic_polynomial_curve1d.hpp",
            "data/map/reference/reference_segment.cpp",
            "data/ssep/offline_region_contour_loader.cpp",
            "offboard/bag_to_keb_scene/bag_reader.cc",
            "data/app/cmd/cmd_reduce_safe_distance.hpp",
            "data/app/cmd/cmd_remote.hpp",
            "data/ctrl/ctrl_data.cpp",
            "math/smoothing/fem_pos_deviation_interface.h",
            "Testing/wbca_failure_csv_test.cpp",
            "data/constrain/temporary_stop_data.hpp",
            "replayer/scene_data/platoon_proto_codec.hpp",
            "Testing/platoon_follow_target_builder_test.cpp",
            "Testing/ssep_path_corridor_test.cpp",
            "data/constrain/block_data.cpp",
            "math/util/polygon_2d.hpp",
            "proto/pnc_scene/compact_plan_frame_fields.proto",
            "data/obstacle/decision/obstacle_decision_test.cpp",
            "math/curve1d/quartic_polynomial_curve1d_rt.hpp",
            "data/constrain/disable_stop_scope.hpp",
            "io/serialization.hpp",
            "math/piecewise_jerk/constant_jerk_traj.hpp",
            "data/plan/center_line_info.hpp",
            "data/vehicle/spreader_protect.hpp",
            "tools/pnc_proto_mapper/baseline/boost_v15_evidence.json",
            "data/app/reaction/app_reaction.hpp",
            "data/map/routing/birdge_position_ack.hpp",
            "data/common/path_point.hpp",
            "data/plan/path_direction_data.hpp",
            "io/proto_io.hpp",
            "data/dp_poly_path/dp_road_graph.hpp",
            "math/curve1d/linear_polynomial_curve1d.hpp",
            "replayer/scene_data/plan_frame_persistence_policy.yaml",
            "data/vehicle/priori_bay_info.hpp",
            "data/constrain/pnc_junction.hpp",
            "ssep/test/trailer_heuristic_table_test.cc",
            "math/util/box_2d.cpp",
            "io/geometry_proto_persistence.cpp",
            "data/config/cfg_env_const.hpp",
            "data/vehicle/related_motion_tf.hpp",
            "data/vehicle/trailer_state.hpp",
            "ssep/test/CMakeLists.txt",
            "data/obstacle/reverse_lane_approach.hpp",
            "data/map/pnc_map/routing_extension/routing_data.hpp",
            "data/app/cmd/cmd_fsm/ifsm.hpp",
            "data/wbca/grid_map/esdf_map.hpp",
            "ssep/offboard/main_test/main_test_diagonal.cc",
            "math/util/vec_2d.cpp",
            "data/config/cfg_static.hpp",
            "data/lattice/ogm_crash_data.cpp",
            "data/ssep/ssep_ec.hpp",
            "replayer/scene_data/generated/trajectory_schema_inputs.json",
            "Testing/proto_roundtrip.hpp",
            "math/curve1d/polynomial_curve1d.hpp",
            "data/plan/side_pass_data.hpp",
            "proto/scenario.proto",
            "replayer/scene_data/generated/plan_frame_field_roles.json",
            "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml",
            "Testing/fixtures/wbca_truck_collision_gradient_8.csv",
            "data/obstacle/ogm.hpp",
            "data/platoon/platoon_info.hpp",
            "data/app/cmd/cmd_cancel_lock.hpp",
            "data/semantic/semantic_description.hpp",
            "data/vehicle/station_manager.hpp",
            "data/snapshot_data.hpp",
            "Testing/jerk_limited_stop_test.cpp",
            "data/obstacle/obstacle.cpp",
            "data/map/routing/routing_response.cpp",
            "data/config/cfg_dynamic.hpp",
            "data/scenario/scenario_manager.hpp",
            "replayer/scene_data/generated/plan_frame_member_inputs.json",
            "data/app/cmd/cmd_reversing.hpp",
            "replayer/scene_data/config_proto_codec.hpp",
            "data/app/cmd/cmd_right.hpp",
            "data/ssep/ex_lane_change_ec.hpp",
            "data/plan/guide_line_base.hpp",
            "ssep/data_structures/ssep_input.hpp",
            "data/obstacle/cluster_motion_tracker.hpp",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "data/vehicle/request_routing_data.cpp",
            "data/app/cmd/cmd_fsm/cmd_fsm.hpp",
            "math/filter/median_filter.hpp",
            "data/obstacle/perception_obstacle.hpp",
            "ssep/data_structures/proto_persistence.cc",
            "data/map/pnc_map/routing_extension/routing_data.cpp",
            "data/other/flow_control.hpp",
            "data/vehicle/vehicle_chassis.hpp",
            "data/config/cfg_func_sw.cpp",
            "data/app/cmd/cmd_force.hpp",
            "ssep/data_structures/ssep_output.hpp",
            "common/util/switch_value_steady.hpp",
            "data/plan/side_pass_data.cpp",
            "data/ssep/open_space_ec.hpp",
            "data/wbca/grid_map/grid_map.hpp",
            "data/config/cfg_platoon.hpp",
            "data/plan/guide_line.hpp",
            "data/vehicle/lock_station_pts.hpp",
            "data/map/routing/routing_response.h",
            "data/app/cmd/cmd_startup.hpp",
            "data/ssep/ssep_activation.cpp",
            "data/plan/path_data.cpp",
            "data/plan/switch_data.hpp",
            "data/map/reference/bends_decider/bend_decider.hpp",
            "data/map/reference/bends_decider/bends_decider.hpp",
            "data/app/cmd/cmd_align.hpp",
            "data/map/reference/reference_road_section.cpp",
            "data/vehicle/vehicle_command.hpp",
            "data/app/cmd/cmd_cancel_expand.hpp",
            "math/curve2d/curve2d.hpp",
            "Testing/encoding_benchmark_test.cpp",
            "tools/pnc_proto_mapper/audit_boost_nested_serialization.py",
            "data/plan/reference_line_info.hpp",
            "ssep/offboard/ssep_input_provider.cc",
            "data/app/cmd/cmd_cancel_safe.hpp",
            "data/config/cfg_safe_const.hpp",
            "data/config/cfg_system.hpp",
            "ssep/data_structures/type_definition.h",
            "data/obstacle/ogm.cpp",
            "replayer/scene_data/encoding_benchmark.cpp",
            "data/map/reference/bends_decider/bend_attr.hpp",
            "ssep/protos/snapshot.proto",
            "Testing/platoon_lane_change_test.cpp",
            "data/obstacle/prediction_trajectory.hpp",
            "data/constrain/longitude_data.hpp",
            "data/vehicle/cloud_pnc_config.hpp",
            "data/obstacle/obstacle_decider_attr.hpp",
            "math/curve2d/arc_curve2d.hpp",
            "ssep/offboard/main_test/main_ssep.cc",
            "data/vehicle/container_compensate_info.hpp",
            "data/common/trajectory.hpp",
            "data/app/cmd/cmd_unlock.hpp",
            "data/constrain/longitude_constrain.cpp",
            "data/app/cmd/cmd_base.hpp",
            "data/vehicle/vehicle_config.hpp",
            "algorithm/plan/pjpo.hpp",
            "common/time/time.hpp",
            "Testing/wbca_leader_history_test.cpp",
            "data/map/pnc_map/pnc_map_path.hpp",
            "data/vehicle/vehicle_pose.hpp",
            "data/common/sl_boundary.hpp",
            "data/map/reference/reference_segment.hpp",
            "ssep/offboard/main_test/main_test_zhoushan.cc",
            "data/app/cmd/cmd_bend_cloud_decider.hpp",
            "data/vehicle/vehicle_status.hpp",
            "data/common/point.hpp",
            "data/semantic/vehicle.hpp",
            "data/plan/predict_path.hpp",
            "data/config/cfg_hdmap.hpp",
            "Testing/scene_replay_foundation_test.cpp",
            "data/semantic/state.hpp",
            "data/map/envelop/map_envelops.hpp",
            "tools/pnc_proto_mapper/audit_full_custom_codecs.py",
            "data/common/path.cpp",
            "data/map/envelop/map_envelop.hpp",
            "replayer/scene_data/full_proto_custom_encoder.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "ssep/offboard/tools/executable/main_obstacle_publisher.cc",
            "docs/platoon/wbca_failure_replay.md",
            "Testing/platoon_safety_test.cpp",
            "data/wbca/wbca_data.cpp",
            "data/hmi_frame.hpp",
            "tools/pnc_encoding_benchmark/main.cpp",
            "data/decide/error_info.hpp",
            "data/boundary/path_boundary.hpp",
            "data/app/cmd/cmd_traffic_light.hpp",
            "replayer/scene_data/generated/compact_typed_field_codec.cpp",
            "data/ssep/bridge_junction_ec.hpp",
            "data/config/cfg_lat_decide.hpp",
            "ssep/offboard/scene_replay/CMakeLists.txt",
            "data/config/cfg_long_plan.hpp",
            "ssep/data_structures/ssep_recursion_obstacle.hpp",
            "math/curve2d/icurve.hpp",
            "data/obstacle/block.hpp",
            "data/vehicle/vehicle_state.hpp",
            "math/util/frenet_point.hpp",
            "data/app/cmd/cmd_dead_lock_force_park.hpp",
            "proto/CMakeLists.txt",
            "Testing/fixtures/wbca_truck_collision_gradient_7.csv",
            "data/app/app_data.hpp",
            "data/vehicle/cmd_feedback_state.hpp",
            "replayer/scene_data/generated/state_schema_inputs.json",
            "replayer/scene_data/plan_frame_field_roles.csv",
            "core/snapshot_async.cpp",
            "data/constrain/block_data.hpp",
            "data/ssep/field_region_contour.h",
            "ssep/offboard/main_test/main_ssep_input.cc",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "Testing/ssep_scenario_config_lifecycle_test.cpp",
            "data/vehicle/priori_bay_info.cpp",
            "data/app/cmd/cmd_fright.hpp",
            "data/ssep/out_yard_junction_ec.hpp",
            "data/vehicle/trailer_state.cpp",
            "source/ros_source_replayer_snapshot.cpp",
            "data/common/guide_path.hpp",
            "data/plan/guide_line_info.cpp",
            "Testing/legacy_scene_importer_test.cpp",
            "math/util/vec_2d.hpp",
            "io/snapshot_proto_persistence.cpp",
            "data/app/cmd/cmd_dead_lock.hpp",
            "data/plan/predict_path.cpp",
            "data/common/sl_point.hpp",
            "math/curve1d/quintic_polynomial_curve1d_rt.hpp",
            "ssep/offboard/generate_scene_data/CMakeLists.txt",
            "data/app/cmd/cmd_left.hpp",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "data/common/path.hpp",
            "docs/compact_proto_boost_removal.md",
            "data/ssep/ssep_ec.cpp",
            "replayer/scene_data/platoon_proto_codec.cpp",
            "tools/pnc_proto_mapper/sync_config_schema.py",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "data/lattice/stop_planning_context.hpp",
            "data/vehicle/veh_his_states.cpp",
            "data/vehicle/lock_station_data.hpp",
            "data/app/cmd/cmd_remote_ctrl.hpp",
            "Testing/platoon_failure_csv_test.cpp",
            "io/basic_proto_persistence.cpp",
            "data/lattice/ogm_crash_data.hpp",
            "data/map/pnc_map/road_segments.h",
            "ssep/common/math/vec2d.h",
            "data/constrain/disable_stop_range.hpp",
            "data/obstacle/cluster_motion_tracker.cpp",
            "proto/platoon.proto",
            "replayer/scene_data/plan_frame_full_mapping.yaml",
            "math/curve1d/quartic_polynomial_curve1d.hpp",
            "data/plan_frame.hpp",
            "math/smoothing/qp_spline_interface.h",
            "data/vehicle/yard_occupy_info.hpp",
            "data/vehicle/request_routing_data.hpp",
            "ssep/offboard/sdk/ssep_activation_impl.cc",
            "data/plan/ssep_data.hpp",
            "data/app/cmd/cmd_lock.hpp",
            "replayer/scene_data/generated/plan_frame_decoder.cpp",
            "data/vehicle/vehicle_destination.hpp",
            "replayer/scene_data/encoding_benchmark.hpp",
            "data/ssep/ssep_common.hpp",
            "data/app/cmd/cmd_set_target.hpp",
            "data/config/cfg_lat_plan.hpp",
            "data/object.hpp",
            "data/vehicle/trailer_posture.hpp",
            "ssep/offboard/main_test/main_ssep_test.cc",
            "Testing/fixtures/wbca_segment_short_seam_failure.csv",
            "data/semantic/semantic_description.cpp",
            "data/plan/smooth_data.hpp",
            "common/time/duration.hpp",
            "data/vehicle/crane_info.hpp",
            "data/config/cfg_station.hpp",
            "core/hmi_sync.cpp",
            "Testing/fixtures/wbca_platoon_low_speed_failure.csv",
            "tools/pnc_proto_mapper/schema_lint.py",
            "data/config/cfg_decision.hpp",
            "math/util/polygon_2d.cpp",
            "tools/pnc_proto_mapper/draft_persistence_policy.py",
            "data/plan/reference_line_info.cpp",
            "data/map/pnc_map/pnc_map.hpp",
            "data/app/reaction/app_reaction.cpp",
            "data/app/cmd/cmd_estop.hpp",
            "ssep/offboard/main_test/main_test_park.cc",
            "data/app/cmd/cmd_fleft.hpp",
            "data/plan/keb_visualize_data.hpp",
            "data/vehicle/parallel_driving_state.hpp",
            "data/map/reference/center_line.hpp",
            "data/dp_poly_path/dp_road_graph.cpp",
            "data/ssep/into_yard_junction_ec.hpp",
            "data/ssep/trailer_parking_safety.cpp",
            "math/util/box_2d.hpp",
            "data/app/cmd/cmd_fsm/fsm_base.hpp",
            "data/ssep/forward_ec.hpp",
            "sink/ros_sink_snapshot.cpp",
            "data/plan/ssep_data.cpp",
            "data/ssep/field_junction_ec.hpp",
            "data/ssep/seaside_junction_ec.hpp",
            "Testing/fixtures/wbca_segment_tail_timing_failure.csv",
            "math/curve1d/quintic_polynomial_curve1d.hpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/obstacle/obstacle.hpp",
            "ssep/param_loader/param.h",
            "data/app/cmd/cmd_bend_right.hpp",
            "replayer/scene_importer/legacy_boost_plan_frame_decoder.cpp",
            "data/plan/cloud_trajectory.hpp",
            "data/app/fsm_interface.hpp",
            "replayer/scene_data/compact_custom_field_proto_codec.cpp",
            "data/vehicle/traffic_light_data.hpp",
            "data/vehicle/deviation_status.hpp",
            "data/vehicle/crane_info.cpp",
            "data/common/point.cpp",
            "io/persistence.hpp",
            "tools/pnc_proto_mapper/proto_only_lint.py",
            "data/app/fsm/stop_reason.hpp",
            "replayer/replayer_data_process/load_snap_data.cpp",
            "data/config/iconfig.hpp",
            "Testing/planframe_compat_test.cpp",
            "data/map/reference/reference_line.hpp",
            "data/ssep/normal_junction_ec.hpp",
            "replayer/scene_data/config_proto_codec.cpp",
            "data/app/cmd/cmd_bend_left.hpp",
            "data/wbca/wbca_data.hpp",
            "ssep/offboard/path_drawing_tool/CMakeLists.txt",
            "ssep/CMakeLists.txt",
            "ssep/data_structures/ssep_recursion_og.hpp",
            "data/map/routing/flip_seaside_map.hpp",
            "data/ssep/trailer_parking_safety.hpp",
            "math/curve1d/quartic_bezier_curve1d.hpp",
            "data/ctrl/lka_start_up.hpp",
            "Testing/proto_persistence_test.cpp",
            "data/app/cmd/cmd_replan.hpp",
            "sink/ros_sink_snapshot.hpp",
            "data/constrain/longitude_constrain.hpp",
            "data/obstacle/block.cpp",
            "proto/pnc_scene/full_plan_frame.proto",
            "data/vehicle/lane_detection.hpp",
            "data/ssep/reverse_ec.hpp",
            "data/map/routing/destination.hpp",
            "replayer/scene_data/remaining_plan_proto_codec.cpp",
            "proto/plan_data.proto",
            "replayer/scene_data/full_custom_codec_exclusions.yaml",
            "replayer/sdk/planframe_compat.cpp",
            "data/constrain/constrain_data.hpp",
            "data/semantic/semantic.hpp",
            "ssep/data_structures/map_element_polyline.h",
            "data/config/cfg_func_sw.hpp",
            "data/plan/start_point_data.hpp",
            "data/vehicle/related_offset.cpp",
            "data/obstacle/perception_obstacle.cpp",
            "data/plan/guide_line_info.hpp",
            "data/config/cfg_calib_ssep.hpp",
            "data/ctrl/ctrl_data.hpp",
            "replayer/scene_data/generated/config_schema_inputs.json",
            "data/constrain/long_target.hpp",
            "data/vehicle/cloud_lane_change_status.hpp",
            "ssep/offboard/tools/executable/inference_ml_trajectory_cli.cc",
            "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md",
            "data/plan/path_data.hpp",
            "math/util/discrete_match_helper.hpp",
            "data/lattice/lattice_trajectory1d.hpp",
            "data/vehicle/veh_his_states.hpp",
            "ssep/coarse_search/evaluator/shortest_path_heur_table.h",
            "proto/config.proto",
            "math/filter/mean_filter.hpp",
            "data/plan/switch_data.cpp",
            "data/common/trajectory_point.hpp",
            "data/lattice/lattice_debug_data.hpp",
            "replayer/scene_data/generated/boost_compact_persistence_diff.yaml",
            "data/vehicle/cloud_pnc_config.cpp",
            "scenarios/scenario_interface.hpp",
            "common/util/error_code_data.hpp",
            "ssep/offboard/servers/CMakeLists.txt",
            "data/map/pnc_map/pnc_map_path.cpp",
            "data/constrain/disable_stop_range.cpp",
            "Testing/obstacle_stop_constraint_stabilizer_test.cpp",
            "ssep/offboard/generate_path_repository/CMakeLists.txt",
            "ssep/data_structures/type_definition.cc",
            "tools/pnc_proto_mapper/test_proto_only_lint.py",
            "ssep/offboard/CMakeLists.txt",
            "data/map/reference/reference_road_section.hpp",
            "data/plan_frame.cpp",
            "data/app/cmd/cmd_nstop.hpp",
            "data/common/trajectory.cpp",
            "ssep/offboard/main_test/main_test_qhd.cc"
          ],
          "commitId" : "b064d692a1b500df5f561fa141a12cb76cb90e2f",
          "timestamp" : 1791875305000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "Migrate remaining Boost serialization to typed Protobuf\u000a",
          "date" : "2026-10-13 15:08:25 +0800",
          "id" : "b064d692a1b500df5f561fa141a12cb76cb90e2f",
          "msg" : "Migrate remaining Boost serialization to typed Protobuf",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_reduce_safe_distance.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/common/math/vec2d.h"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_fsm/cmd_fsm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "core/hmi_sync.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_scenario_config_lifecycle_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/ssep_input_provider.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/generate_scene_data/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/quintic_polynomial_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/other/flow_control.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_pover.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/schema_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "common/util/error_code_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/snapshot_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve2d/curve2d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/stop_planning_context.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_estop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/start_point_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_unlock.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/legacy_scene_importer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/path.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/trailer_parking_safety.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cloud_lane_change_status.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_hdmap.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/config_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "math/util/box_2d.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/offline_region_contour_loader.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_test_park.cc"
            },
            {
              "editType" : "delete",
              "file" : "io/serialization.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/audit_boost_nested_serialization.py"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_persistence_catalog.md"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_recursion_og.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_field_roles.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_static.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/grid_map/esdf_map.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/app_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_force.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_traffic_light.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/sl_boundary.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_cancel_safe.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/sdk/planframe_compat.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/cubic_polynomial_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_set_target.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/envelop/map_envelop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/discrete_match_helper.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/bends_decider/bend_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/type_definition.h"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ex_lane_change_ec.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/platoon_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/localization_estimate.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ssep_path_corridor_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "common/util/switch_value_steady.hpp"
            },
            {
              "editType" : "add",
              "file" : "proto/offline_capture.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/replayer_data_process/load_snap_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_env_const.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_output.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/piecewise_jerk/constant_jerk_traj.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_lock.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_chassis.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/yard_occupy_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/ogm_crash_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line_base.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/reaction/app_reaction.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_proto_custom_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/filter/mean_filter.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/fixtures/wbca_segment_short_seam_failure.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/longitude_constrain.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/sync_config_schema.py"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/cloud_trajectory.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_status.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan_frame.cpp"
            },
            {
              "editType" : "edit",
              "file" : "io/persistence.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/executable/inference_ml_trajectory_cli.cc"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/test_proto_only_lint.py"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/remaining_plan_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/ssep_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "common/time/time.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_system.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_segment.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/load_snap_data_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/point.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/compact_plan_frame_fields.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/servers/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_fsm/ifsm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "common/time/duration.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/fixtures/wbca_segment_tail_timing_failure.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/trailer_parking_safety.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/tools/executable/main_obstacle_publisher.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/decide/error_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map_path.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/piecewise_jerk/piecewise_jerk_traj.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/path_point.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cloud_pnc_config.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/vec_2d.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve2d/icurve.hpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/proto_persistence_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/full_custom_codec_exclusions.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_motion_tracker.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_range.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/obstacle_stop_constraint_stabilizer_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_fright.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/audit_full_custom_codecs.py"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lane_detection.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/start_point_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/smoothing/qp_spline_interface.h"
            },
            {
              "editType" : "delete",
              "file" : "sink/ros_sink_snapshot.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/prediction_trajectory.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/sl_point.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/plan_data.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/generate_path_repository/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_field_roles.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/pnc_map_path.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve2d/arc_curve2d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_direction_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_test_qhd.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_ssep_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_ssep.cc"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/quintic_polynomial_curve1d_rt.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/related_motion_tf.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_command.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_right.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/guide_path.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/box_2d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/grid_map/grid_map.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/coarse_search/evaluator/shortest_path_heur_table.h"
            },
            {
              "editType" : "edit",
              "file" : "Testing/encoding_benchmark_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_func_sw.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_nstop.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ctrl/ctrl_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/traffic_light_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm_interface.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_destination.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/reverse_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_remote.hpp"
            },
            {
              "editType" : "edit",
              "file" : "scenarios/scenario_interface.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_decision.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_fleft.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_full_mapping.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_remote_ctrl.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_bend_left.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/plan_frame_persistence_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_importer/legacy_boost_plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_road_section.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_typed_field_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/smooth_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/bridge_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/reverse_lane_approach.hpp"
            },
            {
              "editType" : "delete",
              "file" : "sink/ros_sink_snapshot.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_input.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/filter/median_filter.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/deviation_status.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/routing/destination.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/trailer_state.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_test_zhoushan.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_align.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/planframe_compat_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/frenet_point.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_long_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_update_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/bends_decider/bends_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/routing/routing_response.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/fixtures/wbca_platoon_low_speed_failure.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/common/point.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/center_line_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/reference_line_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/semantic/semantic_description.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/scene_replay_foundation_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/trajectory.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/center_line.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/longitude_constrain.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/decide/decide_reaction.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_segment.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_base.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_dynamic.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/quartic_polynomial_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/lattice_debug_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_safe_const.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/related_offset.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/pnc_junction.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_activation.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/block.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_ssep_input.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/ctrl/lka_start_up.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/routing/routing_response.h"
            },
            {
              "editType" : "edit",
              "file" : "data/semantic/semantic_description.cpp"
            },
            {
              "editType" : "add",
              "file" : "Testing/proto_roundtrip.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_decide.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/lattice_trajectory1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/vec_2d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/param_loader/param.h"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/crane_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/veh_his_states.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/ogm_crash_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "source/ros_source_replayer_snapshot.cpp"
            },
            {
              "editType" : "edit",
              "file" : "core/snapshot_async.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/smoothing/fem_pos_deviation_interface.h"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/station_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/fixtures/wbca_truck_collision_gradient_7.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/side_pass_data.hpp"
            },
            {
              "editType" : "add",
              "file" : "io/proto_io.hpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/protos/snapshot.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_codec_coverage_audit.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_startup.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_dead_lock_force_park.hpp"
            },
            {
              "editType" : "add",
              "file" : "replayer/scene_data/platoon_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/routing_extension/routing_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/wbca_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/reference_line_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/spreader_protect.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_bend_cloud_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_fsm/fsm_base.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/field_region_contour.h"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/perception_obstacle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/config.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/keb_visualize_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/scenario.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/parallel_driving_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/routing/birdge_position_ack.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/semantic/semantic.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/path.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/crane_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "proto/platoon.proto"
            },
            {
              "editType" : "edit",
              "file" : "data/app/fsm/stop_reason.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/common/trajectory.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/block.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/predict_path.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/path_boundary.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/map/pnc_map/road_segments.h"
            },
            {
              "editType" : "edit",
              "file" : "data/common/trajectory_point.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/reference_line.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/container_compensate_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_failure_csv.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/predict_path.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ssep_common.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/compact_proto_boost_removal.md"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/polynomial_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/pnc_scene/full_plan_frame.proto"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/trailer_heuristic_table_test.cc"
            },
            {
              "editType" : "edit",
              "file" : "docs/platoon/wbca_failure_replay.md"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/side_pass_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/veh_his_states.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/ssep_recursion_obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/trajectory_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/quartic_bezier_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/bends_decider/bend_decider.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_custom_field_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_leader_history_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_proto_mapper/draft_persistence_policy.py"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_left.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lock_station_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/wbca/wbca_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/guide_line_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/reaction/app_reaction.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ctrl/ctrl_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/ogm.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/lock_station_pts.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/priori_bay_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan_frame.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_cancel_expand.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_cancel_lock.hpp"
            },
            {
              "editType" : "edit",
              "file" : "offboard/bag_to_keb_scene/bag_reader.cc"
            },
            {
              "editType" : "edit",
              "file" : "math/util/polygon_2d.hpp"
            },
            {
              "editType" : "add",
              "file" : "tools/pnc_proto_mapper/baseline/boost_v15_evidence.json"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/seaside_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/hmi_frame.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/test/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "Testing/wbca_failure_csv_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/dp_road_graph.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/trailer_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/state_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "Testing/fixtures/wbca_truck_collision_gradient_8.csv"
            },
            {
              "editType" : "edit",
              "file" : "data/map/routing/flip_seaside_map.hpp"
            },
            {
              "editType" : "add",
              "file" : "io/geometry_proto_persistence.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_reversing.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/linear_polynomial_curve1d.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_dead_lock.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/dp_poly_path/dp_road_graph.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/related_offset.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/path_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "math/util/polygon_2d.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/config_proto_codec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/iconfig.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_calib_ssep.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_bend_right.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/priori_bay_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle_decider_attr.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/semantic/state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lane_change_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cloud_pnc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/semantic/vehicle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "math/curve1d/quartic_polynomial_curve1d_rt.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_lat_plan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/field_junction_ec.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/cmd_feedback_state.hpp"
            },
            {
              "editType" : "edit",
              "file" : "tools/pnc_encoding_benchmark/main.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/longitude_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/cluster_motion_tracker.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/request_routing_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/boost_compact_persistence_diff.yaml"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/map_element_polyline.h"
            },
            {
              "editType" : "edit",
              "file" : "data/map/envelop/map_envelops.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/main_test/main_test_diagonal.cc"
            },
            {
              "editType" : "add",
              "file" : "io/snapshot_proto_persistence.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/trailer_posture.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/app/cmd/cmd_replan.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/vehicle/vehicle_pose.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/constrain_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/perception_obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/CMakeLists.txt"
            },
            {
              "editType" : "add",
              "file" : "io/basic_proto_persistence.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/pjpo.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_decoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/temporary_stop_data.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/encoding_benchmark.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/long_target.hpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/scene_replay/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/data_structures/type_definition.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/scenario/scenario_manager.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_station.hpp"
            },
            {
              "editType" : "add",
              "file" : "ssep/data_structures/proto_persistence.cc"
            },
            {
              "editType" : "edit",
              "file" : "data/object.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/disable_stop_scope.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/path_drawing_tool/CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "ssep/offboard/sdk/ssep_activation_impl.cc"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/long_target_calculator.cpp",
            "Testing/jerk_limited_stop_test.cpp"
          ],
          "commitId" : "fa72c4184c220ae79f323005536e4272929b3527",
          "timestamp" : 1791876247000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: preserve actual distances for longitudinal terminal targets\u000a",
          "date" : "2026-10-13 15:24:07 +0800",
          "id" : "fa72c4184c220ae79f323005536e4272929b3527",
          "msg" : "fix: preserve actual distances for longitudinal terminal targets",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/long_target_calculator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "CMakeLists.txt"
          ],
          "commitId" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
          "timestamp" : 1792564868000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix: restore GCC compatibility with vehicle Abseil archives\u000a",
          "date" : "2026-10-21 14:41:08 +0800",
          "id" : "d91ca0e6bdcd735a27a0491bd255d7cd33e5d7c8",
          "msg" : "fix: restore GCC compatibility with vehicle Abseil archives",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            }
          ]
        }
      ],
      "kind" : "git"
    }
  ],
  "culprits" : [
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/wuyanjun110",
      "fullName" : "wuyanjun110"
    },
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/jiayifei",
      "fullName" : "jiayifei"
    },
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
      "fullName" : "chenran"
    },
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/liuhongshuo",
      "fullName" : "liuhongshuo"
    }
  ],
  "nextBuild" : {
    "number" : 2178,
    "url" : "http://159.27.114.184:8080/jenkins/job/module-pnc_replayer/2178/"
  },
  "previousBuild" : {
    "number" : 2176,
    "url" : "http://159.27.114.184:8080/jenkins/job/module-pnc_replayer/2176/"
  }
}