{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      "_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"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 1,
      "buildableTimeMillis" : 1,
      "buildingDurationMillis" : 471759,
      "executingTimeMillis" : 471759,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 0,
      "waitingTimeMillis" : 0
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 635,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
            "branch" : [
              {
                "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
            "branch" : [
              {
                "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 5,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
            "branch" : [
              {
                "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
            "branch" : [
              {
                "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 253,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
            "branch" : [
              {
                "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
            "branch" : [
              {
                "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
        "branch" : [
          {
            "SHA1" : "d0e6a1b119120eb657490785cb9b72d22682e361",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/pysim"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#635",
  "duration" : 471759,
  "estimatedDuration" : 472452,
  "executor" : None,
  "fullDisplayName" : "simtester-sanitize #635",
  "id" : "635",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 635,
  "queueId" : 150162,
  "result" : "SUCCESS",
  "timestamp" : 1782175380407,
  "url" : "https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/635/",
  "builtOn" : "simtester",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "a7c762eb2e2d7b617f99f2637a1e07d6fcb21c99",
        "timestamp" : 1781987378000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "ConfigurableParameter: do not magically overwrite the 'name' attribute\u000a\u000aThe ClassVarMeta metaclass used to derive each ConfigurableParameter's\u000a'name' attribute automatically from the Python class name (via\u000acamel_to_snake()).  Stop doing this, for three reasons:\u000a\u000a1) Python class names follow constraints that do not fit the naming\u000a   commonly used in CSV files.  For example, a name like\u000a   \"5GS-SUCI-CalcInfo\" starts with a digit and contains dashes,\u000a   neither of which is permissible in a class name.\u000a\u000a2) Python class names live in their own namespace, distinct from the\u000a   one used to present eSIM parameters to end users.  Deriving the UI\u000a   name from the class name couples these two namespaces together.\u000a\u000a   Taken together, (1) and (2) mean that automatic naming both imposes\u000a   class-name constraints on the user-visible names and merges the\u000a   internal Python namespace with the publicly shown one - a layer\u000a   violation from the perspective of UI design.\u000a\u000a3) Overriding 'name' from __new__() makes manual naming impossible: a\u000a   subclass that sets 'name = \"bar\"' as a class attribute would still\u000a   end up with the value computed by the metaclass, which is\u000a   surprising and hard to track down:\u000a\u000a       class MySuper(metaclass=...):  # __new__ sets name = 'foo'\u000a           ...\u000a       class MySub(MySuper):\u000a           name = 'bar'\u000a       print(MySub().name)  # 'foo', not 'bar' as one would expect\u000a\u000aChange-Id: I6f631444c6addeb7ccc5f6c55b9be3dc83409169\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:29:38 +0700",
        "id" : "a7c762eb2e2d7b617f99f2637a1e07d6fcb21c99",
        "msg" : "ConfigurableParameter: do not magically overwrite the 'name' attribute",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_configurable_parameters.py",
          "tests/unittests/xo/test_configurable_parameters",
          "tests/unittests/smdpp_data",
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "3974e9693301d23104bae4a995cb22639ac5e0c2",
        "timestamp" : 1781987402000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "add test_configurable_parameters.py\u000a\u000aAdd ConfigurableParameterTest, which applies each parameter to a real\u000aUPP DER template and reads it back, comparing results against a stored\u000aexpected-output snapshot (xo/test_configurable_parameters).\u000a\u000aAdd TestValidateVal covering validate_val() for Iccid, Imsi, Pin1, Puk1\u000aand K, testing both valid inputs and invalid ones expected to raise\u000aValueError.\u000a\u000aAdd TestEnumParam covering the EnumParam methods (validate_val,\u000amap_name_to_val, map_val_to_name, name_normalize, clean_name_str) using\u000aAlgorithmID as the concrete subclass, including fuzzy name matching.\u000a\u000aAlso add get_value_from_pes() to ConfigurableParameter as a convenience\u000awrapper around get_values_from_pes() that asserts all returned values\u000aare identical and returns the single result.\u000a\u000aChange-Id: Ia55f0d11f8197ca15a948a83a34b3488acf1a0b4\u000aCo-authored-by: Vadim Yanitskiy <vyanitskiy@sysmocom.de>\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:30:02 +0700",
        "id" : "3974e9693301d23104bae4a995cb22639ac5e0c2",
        "msg" : "add test_configurable_parameters.py",
        "paths" : [
          {
            "editType" : "add",
            "file" : "tests/unittests/xo/test_configurable_parameters"
          },
          {
            "editType" : "add",
            "file" : "tests/unittests/smdpp_data"
          },
          {
            "editType" : "add",
            "file" : "tests/unittests/test_configurable_parameters.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_configurable_parameters.py",
          "tests/unittests/xo/test_configurable_parameters",
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "ef0a2fcb375d3715d68d6f7f61e70c65e4dc4891",
        "timestamp" : 1781987402000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization.ConfigurableParameter: fix BytesIO() input\u000a\u000aChange-Id: I0ad160eef9015e76eef10baee7c6b606fe249123\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:30:02 +0700",
        "id" : "ef0a2fcb375d3715d68d6f7f61e70c65e4dc4891",
        "msg" : "personalization.ConfigurableParameter: fix BytesIO() input",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_configurable_parameters.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/xo/test_configurable_parameters"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_configurable_parameters.py",
          "tests/unittests/xo/test_configurable_parameters",
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "bfdfcad22cb124bdd97e132396bb72ec1b20c412",
        "timestamp" : 1781987402000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization: add int as input type for BinaryParameter\u000a\u000aChange-Id: I31d8142cb0847a8b291f8dc614d57cb4734f0190\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:30:02 +0700",
        "id" : "bfdfcad22cb124bdd97e132396bb72ec1b20c412",
        "msg" : "personalization: add int as input type for BinaryParameter",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_configurable_parameters.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/xo/test_configurable_parameters"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/param_source.py"
        ],
        "commitId" : "4307cffc8223260012509a3e231b70e6a7dc24fe",
        "timestamp" : 1781987402000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "param_source: allow plugging a random implementation (for testing)\u000a\u000aChange-Id: Idce2b18af70c17844d6f09f7704efc869456ac39\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:30:02 +0700",
        "id" : "4307cffc8223260012509a3e231b70e6a7dc24fe",
        "msg" : "param_source: allow plugging a random implementation (for testing)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/param_source.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_param_src.py",
          "tests/unittests/xo/test_param_src"
        ],
        "commitId" : "b5ba274583cf9988fe266aa5a75f575df8751135",
        "timestamp" : 1781987402000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "add test_param_src.py\u000a\u000aChange-Id: I03087b84030fddae98b965e0075d44e04ec6ba5c\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:30:02 +0700",
        "id" : "b5ba274583cf9988fe266aa5a75f575df8751135",
        "msg" : "add test_param_src.py",
        "paths" : [
          {
            "editType" : "add",
            "file" : "tests/unittests/xo/test_param_src"
          },
          {
            "editType" : "add",
            "file" : "tests/unittests/test_param_src.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/param_source.py"
        ],
        "commitId" : "512aba8b1dacae25e3ad74d990fa9fd1e2f6ac65",
        "timestamp" : 1781988126000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "param_source: use random.SystemRandom as random nr source\u000a\u000aPython's random module uses a PRNG (Mersenne Twister) which is\u000autterly insecure for key generation - it was so far only used for\u000atesting.  Replace it with random.SystemRandom(), which draws from\u000a/dev/urandom and is suitable for generating cryptographic key material.\u000a\u000aChange-Id: I6de38c14ac6dd55bc84d53974192509c18d02bfa\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:42:06 +0700",
        "id" : "512aba8b1dacae25e3ad74d990fa9fd1e2f6ac65",
        "msg" : "param_source: use random.SystemRandom as random nr source",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/param_source.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/param_source.py"
        ],
        "commitId" : "aad92f2b73ce7742c4aa1191d6984261d2eaecee",
        "timestamp" : 1781988371000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "param_source: use secrets.SystemRandom as secure random nr source\u000a\u000asecrets.SystemRandom is defined as the most secure random source\u000aavailable on the given operating system.\u000a\u000aChange-Id: I8049cd1292674b3ced82b0926569128535af6efe\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:46:11 +0700",
        "id" : "aad92f2b73ce7742c4aa1191d6984261d2eaecee",
        "msg" : "param_source: use secrets.SystemRandom as secure random nr source",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/param_source.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/param_source.py"
        ],
        "commitId" : "ce039d69ba0ccc31ea504f62d55e33d6bdb46188",
        "timestamp" : 1781988376000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "saip/param_source: try to not repeat random values\u000a\u000aChange-Id: I4fa743ef5677580f94b9df16a5051d1d178edeb0\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:46:16 +0700",
        "id" : "ce039d69ba0ccc31ea504f62d55e33d6bdb46188",
        "msg" : "saip/param_source: try to not repeat random values",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/param_source.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_esim_saip.py",
          "tests/unittests/test_configurable_parameters.py",
          "tests/unittests/xo/test_configurable_parameters",
          "pyproject.toml",
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "e9ff4f3b93c173fb8c619452636a2b6f8314c927",
        "timestamp" : 1781988376000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization: generate sdkey classes from a list\u000a\u000aChange-Id: Ic92ddea6e1fad8167ea75baf78ffc3eb419838c4\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:46:16 +0700",
        "id" : "e9ff4f3b93c173fb8c619452636a2b6f8314c927",
        "msg" : "personalization: generate sdkey classes from a list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_configurable_parameters.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_esim_saip.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/xo/test_configurable_parameters"
          },
          {
            "editType" : "edit",
            "file" : "pyproject.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/batch.py"
        ],
        "commitId" : "98af3dd2e956fdb6acdcb41ddc42b645bb44b348",
        "timestamp" : 1781988376000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "UppAudit: better indicate exception cause\u000a\u000aChange-Id: I4d986b89a473a5b12ed56b4710263b034876a33e\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:46:16 +0700",
        "id" : "98af3dd2e956fdb6acdcb41ddc42b645bb44b348",
        "msg" : "UppAudit: better indicate exception cause",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/batch.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "c5e7e599282891412868d57ba0ad186c633fafb5",
        "timestamp" : 1781988376000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "ConfigurableParameter: safer val length check\u000a\u000avalidate_val() calls len() to check the value against allow_len,\u000amin_len and max_len. len() requires the object to have a __len__()\u000amethod, which integers do not — calling len() on an int raises\u000aTypeError.\u000a\u000aFix this by checking for __len__ first: if present, use len(val) as\u000ausual; otherwise fall back to len(str(val)), which gives the number\u000aof decimal digits for integer values.\u000a\u000aChange-Id: Ibe91722ed1477b00d20ef5e4e7abd9068ff2f3e4\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 03:46:16 +0700",
        "id" : "c5e7e599282891412868d57ba0ad186c633fafb5",
        "msg" : "ConfigurableParameter: safer val length check",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "38f93d974b3a0e4696f6aa5519cf483d521a2eb5",
        "timestamp" : 1781997474000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "SmspTpScAddr: fix SMSP record length and alpha_id padding\u000a\u000aapply_val() was re-encoding the SMSP with the minimum total_len of 28,\u000awhich produces a 28-byte body with no alpha_id field.  After a DER\u000around-trip, the profile machinery re-pads the body to the original\u000arecord length using the template's fill pattern, which may not be 0xFF.\u000aThose non-0xFF fill bytes end up in the alpha_id area, and GSM 7-bit\u000adecoding then fails with a KeyError when the modified profile is read\u000aback.\u000a\u000aFix by:\u000a- setting alpha_id = '' so the field is present but empty\u000a- setting f_smsp.rec_len = 42 (28 fixed bytes + 14 bytes of alpha_id\u000a  padding) so the re-encoded body carries 0xFF-padded alpha_id space\u000a  and the efFileSize in the fileDescriptor stays consistent\u000a- passing total_len=f_smsp.rec_len to encode_record_bin() so the\u000a  alpha_id area is actually padded to that length\u000a\u000aChange-Id: Ief6e02517f3e96158a2509d763b88aec4bd5a296\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-21 06:17:54 +0700",
        "id" : "38f93d974b3a0e4696f6aa5519cf483d521a2eb5",
        "msg" : "SmspTpScAddr: fix SMSP record length and alpha_id padding",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_configurable_parameters.py",
          "tests/unittests/xo/test_configurable_parameters"
        ],
        "commitId" : "b576e8fcff3f286158c986844c10e1529cd171b1",
        "timestamp" : 1782132532000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "test_configurable_parameters.py: add tests for new parameters\u000a\u000aFor:\u000aSmspTpScAddr\u000aMilenageRotation\u000aMilenageXoringConstants\u000aTuakNrOfKeccak\u000a\u000aChange-Id: Iecbea14fe31a9ee08d871dcde7f295d26d7bd001\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-22 19:48:52 +0700",
        "id" : "b576e8fcff3f286158c986844c10e1529cd171b1",
        "msg" : "test_configurable_parameters.py: add tests for new parameters",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_configurable_parameters.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/xo/test_configurable_parameters"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "861ed0a1d8b75e72a0d930ed66444fbc36973567",
        "timestamp" : 1782132989000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "add comment about not updating existing key_usage_qualifier\u000a\u000aChange-Id: Ie23ae5fde17be6b37746784bf1601b4d0874397a\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-22 19:56:29 +0700",
        "id" : "861ed0a1d8b75e72a0d930ed66444fbc36973567",
        "msg" : "add comment about not updating existing key_usage_qualifier",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "cfe2b94f6758e3708bf550310c98fde0e7427a18",
        "timestamp" : 1782132989000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "saip SmspTpScAddr.get_values_from_pes: allow empty values\u000a\u000aChange-Id: Ibbdd08f96160579238b50699091826883f2e9f5a\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-22 19:56:29 +0700",
        "id" : "cfe2b94f6758e3708bf550310c98fde0e7427a18",
        "msg" : "saip SmspTpScAddr.get_values_from_pes: allow empty values",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "728940efb2a4e5eb46d822dabc092756b32a2da8",
        "timestamp" : 1782132989000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "saip: add numeric_base indicator to ConfigurableParameter\u000a\u000aBy default, numeric_base = None, to indicate that there are no explicit\u000alimitations on the number space.\u000a\u000aFor parameters that are definitely decimal, set numeric_base = 10.\u000aFor definitely hexadecimal, set numeric_base = 16.\u000a\u000aDo the same for ConfigurableParameter as well as ParamSource, so callers\u000acan match them up: if a parameter is numeric_base = 10, then omit\u000asources that are numeric_base = 16, and vice versa.\u000a\u000aChange-Id: Ib0977bbdd9a85167be7eb46dd331fedd529dae01\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-06-22 19:56:29 +0700",
        "id" : "728940efb2a4e5eb46d822dabc092756b32a2da8",
        "msg" : "saip: add numeric_base indicator to ConfigurableParameter",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/euicc.py"
        ],
        "commitId" : "980282cc12b7c89e29d82e397e47b0d2701ef637",
        "timestamp" : 1782147784000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "euicc: extend get_profiles_info to retrieve all known tags\u000a\u000aget_profiles_info only request for the default tag list, but\u000anot all tags.\u000aAdd --all to the function to request for all known tags.\u000a\u000aChange-Id: Ia6878519a480bd625bb1fa2567c1fd2e0e89b071\u000a",
        "date" : "2026-06-22 17:03:04 +0000",
        "id" : "980282cc12b7c89e29d82e397e47b0d2701ef637",
        "msg" : "euicc: extend get_profiles_info to retrieve all known tags",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/euicc.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/euicc.py"
        ],
        "commitId" : "d0e6a1b119120eb657490785cb9b72d22682e361",
        "timestamp" : 1782147784000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
          "fullName" : "laforge"
        },
        "authorEmail" : "laforge@osmocom.org",
        "comment" : "euicc: get_profiles_info: add additional tags\u000a\u000aAdd definitions for ProfileOwner (decoded),\u000aNotification Configuration Info, SM-DP+ proprietary data,\u000aProfile Policy Rules.\u000a\u000aChange-Id: I727dbe34d87a42bb3b526bd7a8accd687d20a208\u000a",
        "date" : "2026-06-22 17:03:04 +0000",
        "id" : "d0e6a1b119120eb657490785cb9b72d22682e361",
        "msg" : "euicc: get_profiles_info: add additional tags",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/euicc.py"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/laforge",
      "fullName" : "laforge"
    },
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
      "fullName" : "Vadim Yanitskiy"
    }
  ]
}