{
  "_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 146",
          "upstreamBuild" : 146,
          "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: #146"
        }
      ]
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.libs.LibrariesAction"
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 19,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
            "branch" : [
              {
                "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
                "name" : "master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
            "branch" : [
              {
                "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
                "name" : "master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
        "branch" : [
          {
            "SHA1" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
            "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" : 19,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
            "branch" : [
              {
                "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
            "branch" : [
              {
                "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
        "branch" : [
          {
            "SHA1" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
            "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/dev_ros2" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 19,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
            "branch" : [
              {
                "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
                "name" : "origin/dev_ros2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
            "branch" : [
              {
                "SHA1" : "09e25f72706b8350a7a15258d8e2613a6e2d1a2b",
                "name" : "origin/dev_ros2"
              }
            ]
          }
        }
      },
      "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_ros2_platoon" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 19,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
            "branch" : [
              {
                "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
                "name" : "origin/feat_ros2_platoon"
              }
            ]
          },
          "revision" : {
            "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
            "branch" : [
              {
                "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
                "name" : "origin/feat_ros2_platoon"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
        "branch" : [
          {
            "SHA1" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
            "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" : 19,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
            "branch" : [
              {
                "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
                "name" : "origin/ros2"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
            "branch" : [
              {
                "SHA1" : "1336438603254bb01a9125eabd6d531597c243cc",
                "name" : "origin/ros2"
              }
            ]
          }
        }
      },
      "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" : "#19",
  "duration" : 950378,
  "estimatedDuration" : 643751,
  "executor" : null,
  "fullDisplayName" : "module-pnc_replayer-ros2 #19",
  "id" : "19",
  "keepLog" : false,
  "number" : 19,
  "queueId" : 1371389,
  "result" : "SUCCESS",
  "timestamp" : 1793254848207,
  "url" : "http://159.27.114.184:8080/jenkins/job/module-pnc_replayer-ros2/19/",
  "changeSets" : [
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "src/org/devops/postRetry.groovy",
            "src/org/orin/orinRos2Choice.groovy"
          ],
          "commitId" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
          "timestamp" : 1793153940000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/zhaojianfeng2",
            "fullName" : "zhaojianfeng2"
          },
          "authorEmail" : "zhaojianfeng2@senior.auto",
          "comment" : "Add onlyPost helper and orinRos2Choice onlyPost param\u000a\u000aPortal「仅重试 post」传 onlyPost=yes 时跳过编译、复用工作区 zip 重传 OTA。\u000a",
          "date" : "2026-10-28 10:19:00 +0800",
          "id" : "be37692c70b87cd081ecb3bbecd2a746b2d38daa",
          "msg" : "Add onlyPost helper and orinRos2Choice onlyPost param",
          "paths" : [
            {
              "editType" : "add",
              "file" : "src/org/devops/postRetry.groovy"
            },
            {
              "editType" : "edit",
              "file" : "src/org/orin/orinRos2Choice.groovy"
            }
          ]
        }
      ],
      "kind" : "git"
    },
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "orin/orin-build-ros2.jenkinsfile",
            "weifang-config-container.jenkinsfile"
          ],
          "commitId" : "f74f07a390fd23edfbc66c75fc9bc28c96e0a733",
          "timestamp" : 1793153962000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/zhaojianfeng2",
            "fullName" : "zhaojianfeng2"
          },
          "authorEmail" : "zhaojianfeng2@senior.auto",
          "comment" : "Support onlyPost skip-build zip->post retry for orin-ros2 and weifang-config\u000a\u000aPortal「仅重试 post」写入 onlyPost=yes / notes 含仅重试post 时跳过 checkout/build，复用工作区 zip 重传。\u000a",
          "date" : "2026-10-28 10:19:22 +0800",
          "id" : "f74f07a390fd23edfbc66c75fc9bc28c96e0a733",
          "msg" : "Support onlyPost skip-build zip->post retry for orin-ros2 and weifang-config",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "orin/orin-build-ros2.jenkinsfile"
            },
            {
              "editType" : "edit",
              "file" : "weifang-config-container.jenkinsfile"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "hardware/polaris.jenkinsfile"
          ],
          "commitId" : "0baa87f715683e77a024c4a95113a8007bd37042",
          "timestamp" : 1793167587000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
            "fullName" : "weilikang"
          },
          "authorEmail" : "weilikang@senior.auto",
          "comment" : "Update polaris.jenkinsfile\u000a",
          "date" : "2026-10-28 06:06:27 +0000",
          "id" : "0baa87f715683e77a024c4a95113a8007bd37042",
          "msg" : "Update polaris.jenkinsfile",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "hardware/polaris.jenkinsfile"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "orin-cleanup.jenkinsfile"
          ],
          "commitId" : "dfb260ae9929137130f9c7a4fcaad2ffda50732e",
          "timestamp" : 1793178069000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
            "fullName" : "weilikang"
          },
          "authorEmail" : "weilikang@senior.auto",
          "comment" : "Add new file\u000a",
          "date" : "2026-10-28 09:01:09 +0000",
          "id" : "dfb260ae9929137130f9c7a4fcaad2ffda50732e",
          "msg" : "Add new file",
          "paths" : [
            {
              "editType" : "add",
              "file" : "orin-cleanup.jenkinsfile"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "orin-cleanup.jenkinsfile"
          ],
          "commitId" : "728295f9021ee87fcc26e506e947c437e21cd4c6",
          "timestamp" : 1793180157000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
            "fullName" : "weilikang"
          },
          "authorEmail" : "weilikang@senior.auto",
          "comment" : "Update orin-cleanup.jenkinsfile\u000a",
          "date" : "2026-10-28 09:35:57 +0000",
          "id" : "728295f9021ee87fcc26e506e947c437e21cd4c6",
          "msg" : "Update orin-cleanup.jenkinsfile",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "orin-cleanup.jenkinsfile"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "orin-cleanup.jenkinsfile"
          ],
          "commitId" : "402aea751818b5fac6587bd01c20b307bcf34a0f",
          "timestamp" : 1793180191000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
            "fullName" : "weilikang"
          },
          "authorEmail" : "weilikang@senior.auto",
          "comment" : "Update orin-cleanup.jenkinsfile\u000a",
          "date" : "2026-10-28 09:36:31 +0000",
          "id" : "402aea751818b5fac6587bd01c20b307bcf34a0f",
          "msg" : "Update orin-cleanup.jenkinsfile",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "orin-cleanup.jenkinsfile"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "orin-cleanup.jenkinsfile"
          ],
          "commitId" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
          "timestamp" : 1793240470000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
            "fullName" : "weilikang"
          },
          "authorEmail" : "weilikang@senior.auto",
          "comment" : "Update orin-cleanup.jenkinsfile\u000a",
          "date" : "2026-10-29 02:21:10 +0000",
          "id" : "8c5fb82a6e06c0dbb3c432c0d003f6282693fd19",
          "msg" : "Update orin-cleanup.jenkinsfile",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "orin-cleanup.jenkinsfile"
            }
          ]
        }
      ],
      "kind" : "git"
    },
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Testing/platoon_safety_test.cpp",
            "algorithm/lattice/lattice.cpp"
          ],
          "commitId" : "3f5233821c86ff38ba071263284c37b2caca4b93",
          "timestamp" : 1793090660000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): remove missing leader ST candidate veto\u000a",
          "date" : "2026-10-27 16:44:20 +0800",
          "id" : "3f5233821c86ff38ba071263284c37b2caca4b93",
          "msg" : "fix(platoon): remove missing leader ST candidate veto",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/lattice.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "algorithm/platoon/leader_reference.cpp",
            "data/config/cfg_platoon.cpp",
            "algorithm/platoon/leader_reference.hpp",
            "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md",
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "data/config/cfg_platoon.hpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "config/platoon.yaml",
            "algorithm/platoon/mpc/longitudinal_mpc.cpp",
            "Testing/platoon_follow_target_builder_test.cpp",
            "replayer/scene_data/platoon_proto_codec.cpp",
            "algorithm/platoon/mpc/mpc_config.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "Testing/platoon_safety_test.cpp",
            "Testing/platoon_mpc_core_test.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "Testing/platoon_failure_case_test.cpp",
            "algorithm/platoon/mpc/failure_case.cpp",
            "replayer/scene_data/compact_numeric_leaf_contract.csv",
            "proto/platoon.proto",
            "algorithm/lattice/platoon_trajectory1d_generator.cpp",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb"
          ],
          "commitId" : "a55a05d33208f38e5fa9831730bb6d46074a205c",
          "timestamp" : 1793103859000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "fix(platoon): gate continued leader braking by acceleration threshold\u000a",
          "date" : "2026-10-27 20:24:19 +0800",
          "id" : "a55a05d33208f38e5fa9831730bb6d46074a205c",
          "msg" : "fix(platoon): gate continued leader braking by acceleration threshold",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/platoon_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_failure_case_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/platoon.proto"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/leader_reference.hpp"
            },
            {
              "editType" : "edit",
              "file" : "docs/pnc_algorithm_replay/plan_frame_field_contract_notes.md"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/leader_reference.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_mpc_core_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/longitudinal_mpc.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_leaf_contract.csv"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/platoon_trajectory1d_generator.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp"
            },
            {
              "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" : "algorithm/platoon/mpc/failure_case.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/mpc_config.hpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/lattice/fsm_safety_brake.hpp",
            "data/config/cfg_platoon.cpp",
            "algorithm/platoon/mpc/qp_solver.cpp",
            "algorithm/lattice/brake_trajectory_policy.hpp",
            "algorithm/lattice/longitudinal_curve_validator.hpp",
            "algorithm/lattice/trajectory_combiner.cpp",
            "data/platoon/platoon_info.cpp",
            "Testing/platoon_qp_solver_test.cpp",
            "Testing/jerk_limited_stop_test.cpp",
            "Testing/platoon_follow_target_builder_test.cpp"
          ],
          "commitId" : "4ebcffd93008fe9dd1ff55ec669676178f86d44c",
          "timestamp" : 1793152419000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "refactor: simplify lattice and platoon finite checks\u000a\u000aRemove redundant internal validation and document brake classification preconditions. Remove explicit finite checks from platoon config loading while retaining range defaults; config values are expected to be finite.\u000a\u000aValidate with 97 lattice tests, 24 platoon input/prediction tests, and 9 QP tests. Compile cfg_platoon using the distributed build script.\u000a",
          "date" : "2026-10-28 09:53:39 +0800",
          "id" : "4ebcffd93008fe9dd1ff55ec669676178f86d44c",
          "msg" : "refactor: simplify lattice and platoon finite checks",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/fsm_safety_brake.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/trajectory_combiner.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/mpc/qp_solver.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/jerk_limited_stop_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/platoon/platoon_info.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/longitudinal_curve_validator.hpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/brake_trajectory_policy.hpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_qp_solver_test.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "algorithm/wbca/wbca_manager.cpp",
            "algorithm/lattice/collision_checker.cpp",
            "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp",
            "data/boundary/driving_corridor.cpp",
            "data/ssep/ex_lane_change_ec.cpp",
            "data/map/reference/bends_decider/af_bend_helper.cpp",
            "data/ssep/out_yard_junction_ec.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "data/obstacle/obstacle.hpp",
            "data/ssep/seaside_junction_ec.cpp",
            "tasks/deciders/other_decider/stop_decider.cpp",
            "data/ssep/open_space_ec.cpp",
            "replayer/scene_data/obstacle_proto_codec.cpp",
            "data/map/reference/bends_decider/bend_decider.cpp",
            "replayer/scene_data/generated/container_schema_inputs.json",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "algorithm/decision/semantic_set_transformation_2.cpp",
            "plan/prepare/prepare_platoon.cpp",
            "Testing/platoon_follow_target_builder_test.cpp",
            "data/constrain/block_data.cpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "Testing/platoon_safety_test.cpp",
            "data/lattice/prediction_querier.cpp",
            "algorithm/wbca/occupancy_grid_map/data_render.cpp",
            "hmi/draw/draw_perception.cpp",
            "data/ssep/forward_ec.cpp",
            "data/plan/switch_data.cpp",
            "data/ssep/bridge_junction_ec.cpp",
            "data/ssep/normal_junction_ec.cpp",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "tasks/deciders/long_decider/constrain_decider.cpp",
            "algorithm/plan/trajectories_collistion_detection.cpp",
            "tasks/deciders/long_decider/time_path_graph_decider.cpp",
            "data/obstacle/obstacle.cpp",
            "tasks/plan/keb_utils.cpp",
            "data/obstacle/decision/obstacle_decision.cpp",
            "data/boundary/road_boundary.cpp",
            "data/ssep/into_yard_junction_ec.cpp",
            "proto/obstacle.proto",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "tasks/deciders/other_decider/alarm_decider.cpp"
          ],
          "commitId" : "e44fa9c859ac0c7ca85b7898c063d661eb9fdee5",
          "timestamp" : 1793177525000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: suppress matched platoon perception obstacles in planning\u000a\u000aAssociate perception tractor and trailer obstacles with the valid platoon leader in prepare_platoon. Preserve matched observations for HMI display while excluding them from downstream planning, and persist the association flag in snapshots.\u000a\u000aRender the leader with thick dashed outlines and matched perception in magenta. Add matching, collision exclusion, and snapshot round-trip regression tests.\u000a",
          "date" : "2026-10-28 16:52:05 +0800",
          "id" : "e44fa9c859ac0c7ca85b7898c063d661eb9fdee5",
          "msg" : "feat: suppress matched platoon perception obstacles in planning",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/constrain/block_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/alarm_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/decision/semantic_set_transformation_2.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/other_decider/stop_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/plan/keb_utils.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/container_schema_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/plan/trajectories_collistion_detection.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_encoder.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.hpp"
            },
            {
              "editType" : "edit",
              "file" : "hmi/draw/draw_perception.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/obstacle.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/driving_corridor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/lattice/prediction_querier.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/bends_decider/bend_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/lattice/collision_checker.cpp"
            },
            {
              "editType" : "edit",
              "file" : "plan/prepare/prepare_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/boundary/road_boundary.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/scene_replay_api_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/obstacle.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/ex_lane_change_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/obstacle_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/plan/switch_data.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/occupancy_grid_map/data_render.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/forward_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/seaside_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/obstacle/decision/obstacle_decision.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/map/reference/bends_decider/af_bend_helper.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/into_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/constrain_decider.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/open_space_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/out_yard_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/bridge_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/wbca/wbca_manager.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/ssep/normal_junction_ec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "tasks/deciders/long_decider/time_path_graph_decider.cpp"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "replayer/scene_data/platoon_proto_codec.cpp",
            "sink/ros_sink_platoon_info.hpp",
            "replayer/scene_data/generated/compact_scene_descriptor.pb",
            "Testing/platoon_safety_test.cpp",
            "Testing/ego_trajectory_encoding_test.cpp",
            "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp",
            "sink/ros_sink_platoon_info.cpp",
            "replayer/scene_data/generated/full_custom_cpp_member_inputs.json",
            "replayer/scene_data/compact_numeric_policy.yaml",
            "CMakeLists.txt",
            "sink/ego_trajectory_encoding.hpp",
            "data/config/cfg_platoon.cpp",
            "algorithm/platoon/platoon_leader_predictor.cpp",
            "data/config/cfg_platoon.hpp",
            "replayer/scene_data/compact_numeric_leaf_contract.csv",
            "proto/platoon.proto",
            "Testing/platoon_lattice_test.cpp",
            "replayer/scene_data/generated/plan_frame_encoder.cpp",
            "config/platoon.yaml",
            "replayer/scene_data/generated/scene_replay_api_descriptor.pb",
            "replayer/scene_data/generated/plan_frame_descriptor.pb",
            "Testing/platoon_follow_target_builder_test.cpp"
          ],
          "commitId" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
          "timestamp" : 1793189280000,
          "author" : {
            "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
            "fullName" : "chenran"
          },
          "authorEmail" : "chenran@senior.auto",
          "comment" : "feat: downsample platoon broadcasts at configurable one-second intervals\u000a\u000aKeep trajectory endpoints and motion transitions while reducing transmitted points. Move encoding into RosSinkPlatoonInfo and remove the separate encoder header and sink finite checks.\u000a\u000aPersist the sampling interval with a 1.0-second default, exact float encoding and double fallback. Cover configuration, sparse follower trajectories, braking, turns and snapshot round trips.\u000a\u000aValidation: rebuilt pnc_node and pnc_replayer in the original build directory using the distributed script; 74 focused tests passed. Existing build-boundary and proto-only CMake checks remain failing.\u000a",
          "date" : "2026-10-28 20:08:00 +0800",
          "id" : "2df9becc9b2e2577577c55bdc4bc142398a3607c",
          "msg" : "feat: downsample platoon broadcasts at configurable one-second intervals",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_platoon_info.cpp"
            },
            {
              "editType" : "delete",
              "file" : "sink/ego_trajectory_encoding.hpp"
            },
            {
              "editType" : "edit",
              "file" : "sink/ros_sink_platoon_info.hpp"
            },
            {
              "editType" : "edit",
              "file" : "algorithm/platoon/platoon_leader_predictor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_scene_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "Testing/ego_trajectory_encoding_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.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" : "Testing/platoon_safety_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "proto/platoon.proto"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_leaf_contract.csv"
            },
            {
              "editType" : "edit",
              "file" : "config/platoon.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/plan_frame_descriptor.pb"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/compact_exact_numeric_visitor.cpp"
            },
            {
              "editType" : "edit",
              "file" : "CMakeLists.txt"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/compact_numeric_policy.yaml"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/generated/full_custom_cpp_member_inputs.json"
            },
            {
              "editType" : "edit",
              "file" : "data/config/cfg_platoon.cpp"
            },
            {
              "editType" : "edit",
              "file" : "replayer/scene_data/platoon_proto_codec.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_follow_target_builder_test.cpp"
            },
            {
              "editType" : "edit",
              "file" : "Testing/platoon_lattice_test.cpp"
            }
          ]
        }
      ],
      "kind" : "git"
    }
  ],
  "culprits" : [
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/weilikang",
      "fullName" : "weilikang"
    },
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/chenran",
      "fullName" : "chenran"
    },
    {
      "absoluteUrl" : "http://159.27.114.184:8080/jenkins/user/zhaojianfeng2",
      "fullName" : "zhaojianfeng2"
    }
  ],
  "nextBuild" : null,
  "previousBuild" : {
    "number" : 18,
    "url" : "http://159.27.114.184:8080/jenkins/job/module-pnc_replayer-ros2/18/"
  }
}