{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 836179,
      "executingTimeMillis" : 836179,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 7511,
      "waitingTimeMillis" : 7511
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1974,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
            "branch" : [
              {
                "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
            "branch" : [
              {
                "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/ara-m" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1320,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/keepfiles" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1353,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/fixapdu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1421,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/aramtest" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1467,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1816,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/otatest" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1972,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "27d0d666dcbdf1022e1f021f86365c888fdc8f7f",
            "branch" : [
              {
                "SHA1" : "27d0d666dcbdf1022e1f021f86365c888fdc8f7f",
                "name" : "refs/remotes/origin/pmaier/otatest"
              }
            ]
          },
          "revision" : {
            "SHA1" : "27d0d666dcbdf1022e1f021f86365c888fdc8f7f",
            "branch" : [
              {
                "SHA1" : "27d0d666dcbdf1022e1f021f86365c888fdc8f7f",
                "name" : "refs/remotes/origin/pmaier/otatest"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 402,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
        "branch" : [
          {
            "SHA1" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/pysim"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#1974",
  "duration" : 836179,
  "estimatedDuration" : 849580,
  "executor" : None,
  "fullDisplayName" : "master-pysim #1974",
  "id" : "1974",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 1974,
  "queueId" : 19449,
  "result" : "SUCCESS",
  "timestamp" : 1769801708849,
  "url" : "https://jenkins.osmocom.org/jenkins/view/OsmocomBB/job/master-pysim/1974/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "742baeab56b6a5f9d6a15daf20ebdd06a9b2c985",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor ConfigurableParameter, Iccid, Imsi\u000a\u000aMain points/rationales of the refactoring, details below:\u000a1) common validation implementation\u000a2) offer classmethods\u000a\u000aThe new features are optional, and will be heavily used by batch\u000apersonalization patches coming soon.\u000a\u000aImplement Iccid and Imsi to use the new way, with a common abstract\u000aDecimalParam implementation.\u000a\u000aSo far leave the other parameter classes working as they always did, to\u000afollow suit in subsequent commits.\u000a\u000aDetails:\u000a\u000a1) common validation implementation:\u000aThere are very common validation steps in the various parameter\u000aimplementations. It is more convenient and much more readable to\u000aimplement those once and set simple validation parameters per subclass.\u000aSo there now is a validate_val() classmethod, which subclasses can use\u000aas-is to apply the validation parameters -- or subclasses can override\u000atheir cls.validate_val() for specialized validation.\u000a(Those subclasses that this patch doesn't touch still override the\u000aself.validate() instance method. Hence they still work as before this\u000apatch, but don't use the new common features yet.)\u000a\u000a2) offer stateless classmethods:\u000aIt is useful for...\u000a- batch processing of multiple profiles (in upcoming patches) and\u000a- user input validation\u000ato be able to have classmethods that do what self.validate() and\u000aself.apply() do, but do not modify any self.* members.\u000aSo far the paradigm was to create a class instance to keep state about\u000athe value. This remains available, but in addition we make available the\u000aparadigm of a singleton that is stateless (the classmethods).\u000aUsing self.validate() and self.apply() still work the same as before\u000athis patch, i.e. via self.input_value and self.value -- but in addition,\u000athere are now classmethods that don't touch self.* members.\u000a\u000aRelated: SYS#6768\u000aChange-Id: I6522be4c463e34897ca9bff2309b3706a88b3ce8\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "742baeab56b6a5f9d6a15daf20ebdd06a9b2c985",
        "msg" : "personalization: refactor ConfigurableParameter, Iccid, Imsi",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "21641816ea7132c1ad14227f15eac3678d0cec86",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor Puk\u000a\u000aImplement abstract DecimalHexParam, and use it to refactor Puk1 and Puk2\u000ato the new ConfigurableParameter implementation style.\u000a\u000aDecimalHexParam will also be used for Pin and Adm soon.\u000a\u000aChange-Id: I271e6c030c890778ab7af9ab3bc7997e22018f6a\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "21641816ea7132c1ad14227f15eac3678d0cec86",
        "msg" : "personalization: refactor Puk",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "d5b570b01d806571ff705ccca12c35c16071c17a",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor Pin, Adm\u000a\u000aRefactor Pin1, Pin2, Adm1 and Adm2 to the new ConfigurableParameter\u000aimplementation style.\u000a\u000aChange-Id: I54aef10b6d4309398d4b779a3740a7d706d68603\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "d5b570b01d806571ff705ccca12c35c16071c17a",
        "msg" : "personalization: refactor Pin, Adm",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "ae656c66a3b3a382644ca895d808bca0dad9f2b2",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor AlgorithmID, K, Opc\u000a\u000aRefactor AlgorithmID, K, Opc to the new ConfigurableParameter\u000aimplementation style.\u000a\u000aK and Opc use a common abstract BinaryParam.\u000a\u000aNote from the future: AlgorithmID so far takes \"raw\" int values, but\u000awill turn to be an \"enum\" parameter with predefined meaningful strings\u000ain I71c2ec1b753c66cb577436944634f32792353240\u000a\u000aChange-Id: I6296fdcfd5d2ed313c4aade57ff43cc362375848\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "ae656c66a3b3a382644ca895d808bca0dad9f2b2",
        "msg" : "personalization: refactor AlgorithmID, K, Opc",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "1e9885610585a6b1b22c969b45aaf736fcba4d55",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor SdKey\u000a\u000aRefactor SdKey (and subclasses) to the new ConfigurableParameter\u000aimplementation style, keeping the same implementation.\u000a\u000aBut duly note that this implementation does not work!\u000aIt correctly patches pe.decoded[], but that gets overridden by\u000aProfileElementSD._pre_encode().\u000a\u000aFor a fix, see I07dfc378705eba1318e9e8652796cbde106c6a52.\u000a\u000aChange-Id: I427ea851bfa28b2b045e70a19a9e35d361f0d393\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "1e9885610585a6b1b22c969b45aaf736fcba4d55",
        "msg" : "personalization: refactor SdKey",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "1c082da0ee6cbdcfd08c053f4a2577043f831b9c",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: refactor SmspTpScAddr\u000a\u000aRefactor SmspTpScAddr to the new ConfigurableParameter implementation\u000astyle.\u000a\u000aChange-Id: I2600369e195e9f5aed7f4e6ff99ae273ed3ab3bf\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "1c082da0ee6cbdcfd08c053f4a2577043f831b9c",
        "msg" : "personalization: refactor SmspTpScAddr",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "db17529136e480563bb4bc86d799511672b60d4a",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: set some typical parameter names\u000a\u000aThese names better match what humans expect to read, for example \"PIN1\"\u000ainstead of \"Pin1\".\u000a\u000a(We still fall back to the __class__.__name__ if a subclass omits a\u000aspecific name, see the ConfigurableParameter init.)\u000a\u000aChange-Id: I31f390d634e58c384589c50a33ca45d6f86d4e10\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "db17529136e480563bb4bc86d799511672b60d4a",
        "msg" : "personalization: set some typical parameter names",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
        "timestamp" : 1769801653000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "personalization: set example input values\u000a\u000aFor all ConfigurableParameter subclasses, provide an example_input.\u000a\u000aThis may be useful for downstream projects' user interaction, to suggest\u000aa value or prefill an input field, as appropriate.\u000a\u000aRelated: SYS#6768\u000aChange-Id: I2672fedcbc32cb7a6cb0c233a4a22112bd9aae03\u000a",
        "date" : "2026-01-30 19:34:13 +0000",
        "id" : "ccc1a047abfd367c2a906cee1733b998b115d6a3",
        "msg" : "personalization: set example input values",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
      "fullName" : "laforge"
    }
  ],
  "runs" : [
    {
      "number" : 1974,
      "url" : "https://jenkins.osmocom.org/jenkins/view/OsmocomBB/job/master-pysim/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-master/1974/"
    },
    {
      "number" : 1974,
      "url" : "https://jenkins.osmocom.org/jenkins/view/OsmocomBB/job/master-pysim/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-master/1974/"
    },
    {
      "number" : 1974,
      "url" : "https://jenkins.osmocom.org/jenkins/view/OsmocomBB/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/1974/"
    }
  ]
}