diff --git a/skills/cuopt-install/BENCHMARK.md b/skills/cuopt-install/BENCHMARK.md
index 07e8e6face..39f19c4e07 100644
--- a/skills/cuopt-install/BENCHMARK.md
+++ b/skills/cuopt-install/BENCHMARK.md
@@ -1,82 +1,102 @@
-# Evaluation Report
+# Skill Benchmark: cuopt-install
-Evaluation of the `cuopt-install` skill before publication through NVSkills-Eval.
+> ✅ **Overall verdict: PASS — Recommended for publication**
-This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use.
+## Publication Recommendation
+
+Recommended for publication based on the completed evaluation evidence in this report.
-## Evaluation Summary
+## Evaluation Metadata
- Skill: `cuopt-install`
-- Evaluation date: 2026-06-26
-- NVSkills-Eval profile: `external`
-- Environment: `astra-sandbox`
-- Dataset: 1 evaluation tasks
+- Evaluation date: 2026-08-05
+- Evaluator version: `1.0.0`
+- Agents: Claude Code (`aws/anthropic/bedrock-claude-opus-4-8`), Codex (`openai/openai/gpt-5.5`)
+- Tasks: 1 evaluation tasks (1 positive)
+- Dataset digest: `sha256:75bb16e95e852c956da6f5af155ac6936922740ae833f71436ddcb715da4b6df` (skill-evaluator-dataset-snapshot/1)
- Attempts per task: 1
-- Pass threshold: 50%
-- Overall verdict: PASS
+- Environment: `k8s-sandbox`
+- Tier 3 evidence: required for publication
-## Agents Used
+Each task attempt ran in its own isolated sandbox pod.
-- `claude-code`
-- `codex`
+## What This Report Answers
-## Metrics Used
+The three-tier evaluation checks whether the skill:
-Reported benchmark dimensions:
+- is safe to use;
+- produces correct answers;
+- is discovered and activated when needed;
+- helps the agent complete the user's goal and expected workflow; and
+- avoids wasted skill and tool usage.
-- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
-- Correctness: checks whether the agent follows the expected workflow and produces the correct final output.
-- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
-- Effectiveness: checks whether the agent performs measurably better with the skill than without it.
-- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work.
+## Results at a Glance
-Underlying evaluation signals used in this run:
+| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
+|---|---:|---:|
+| Overall | 64% → 100% (+36 points) | 69% → 91% (+22 points) |
+| Security | 100% → 100% (±0 points) | 100% → 100% (±0 points) |
+| Correctness | 100% → 100% (±0 points) | 100% → 100% (±0 points) |
+| Discoverability | 50% → 100% (+50 points) | 50% → 94% (+44 points) |
+| Effectiveness | 70% → 100% (+30 points) | 95% → 100% (+5 points) |
+| Efficiency | 0% → 100% (+100 points) | 0% → 62% (+62 points) |
-- `security` (Security): checks for unsafe operations, secret leakage, and unauthorized access.
-- `skill_execution` (Skill Execution): verifies that the agent loaded the expected skill and workflow.
-- `skill_efficiency` (Efficiency): checks routing quality, decoy avoidance, and redundant tool usage.
-- `accuracy` (Accuracy): grades final-answer correctness against the reference answer.
-- `goal_accuracy` (Goal Accuracy): checks whether the overall user task completed successfully.
-- `behavior_check` (Behavior Check): verifies expected behavior steps, including safety expectations.
-- `token_efficiency` (Token Efficiency): compares token usage with and without the skill.
+**How to read this table:** baseline is the same task attempted without the target skill. Uplift is `skill score - baseline score`, shown in percentage points.
-## Test Tasks
+Example: `47% → 92% (+45 points)` means the skill-assisted run scored 92%, 45 percentage points above its 47% no-skill baseline.
-The benchmark dataset contained 1 evaluation tasks:
+## Tier Status
-- Positive tasks: 1 tasks where the skill was expected to activate.
-- Negative tasks: 0 tasks where no skill was expected.
-- Unlabeled tasks: 0 tasks where positive/negative intent could not be inferred.
+| Tier | Purpose | Status | Evidence |
+|---|---|---|---|
+| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 1 validator(s); 5 finding(s) |
+| Tier 2 | Semantic deduplication | **NOT RUN** | No result was recorded |
+| Tier 3 | Live agent evaluation | **PASS** | 2 agent(s); 1 task(s) |
-Task composition is derived from the evaluation dataset when possible. Entries with `expected_skill` set are treated as positive skill-activation cases, while entries with `expected_skill: null` are treated as negative activation cases.
+## Findings and Observations
-## Results
+
+Show detailed findings and successful checks
-| Dimension | Num | `claude-code` | `codex` |
-|---|---:|---:|---:|
-| Security | 1 | 100% (+0%) | 100% (+0%) |
-| Correctness | 1 | 100% (+70%) | 97% (+22%) |
-| Discoverability | 1 | 100% (+100%) | 97% (+72%) |
-| Effectiveness | 1 | 100% (+74%) | 100% (+6%) |
-| Efficiency | 1 | 95% (+67%) | 96% (+69%) |
+- **MEDIUM** SCHEMA/frontmatter_field_placement: Root field 'version' is ignored; use 'metadata.version' (`skills/cuopt-install/SKILL.md`)
+- **MEDIUM** SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/cuopt-install/SKILL.md`)
+- **MEDIUM** SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (`skills/cuopt-install/SKILL.md`)
+- **LOW** SCHEMA/unexpected_file: Unexpected 'benchmark' in skill root (`skills/cuopt-install/benchmark`)
+- **LOW** SCHEMA/author_format: Author must be of the form 'Name ' (`skills/cuopt-install/SKILL.md`)
-Score values show skill-assisted performance. Values in parentheses show uplift versus the no-skill baseline when baseline data is available.
+
-## Tier 1: Static Validation Summary
+## Scoring Methodology
-Tier 1 validation passed with observations. NVSkills-Eval ran 1 checks and found 4 total findings.
+
+Show dimension definitions, source signals, and thresholds
-Top findings:
+| Dimension | Question | Scored signals |
+|---|---|---|
+| Security | Is it safe to use? | `security` (100%) |
+| Correctness | Is the answer correct? | `accuracy` (100%) |
+| Discoverability | Was the right skill loaded when needed? | `skill_execution` (100%) |
+| Effectiveness | Did the skill help complete the task? | `goal_accuracy` (50%) + `behavior_check` (50%) |
+| Efficiency | Did it avoid wasted tool or skill usage? | `skill_efficiency` (100%) |
-- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/cuopt-install/SKILL.md`)
-- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (`skills/cuopt-install/SKILL.md`)
-- LOW SCHEMA/unexpected_file: Unexpected 'benchmark' in skill root (`skills/cuopt-install/benchmark`)
-- LOW SCHEMA/author_format: Author must be of the form 'Name ' (`skills/cuopt-install/SKILL.md`)
+- Dimension bands: PASS at 50% or above; NEUTRAL from 40% to below 50%; FAIL below 40%.
+- Overall Tier 3 lift: PASS at +5 points or more; FAIL at -10 points or less; values between those bands are NEUTRAL.
+- Overall verdict: PASS only when every configured dimension passes for at least one supported agent. Lift is reported as diagnostic evidence and does not override this gate.
+- The 50% attempt pass threshold is a separate per-task gate; it is not the dimension pass threshold.
+- Effectiveness is the equal-weight mean of goal completion (`goal_accuracy`) and expected workflow adherence (`behavior_check`).
+- Token efficiency is a separate report-only signal. It does not change a dimension score or the overall verdict.
-## Tier 2: Deduplication Summary
+Signals present in this run:
-This tier was not run or did not produce findings in this report.
+- `security` (Security): unsafe operations, secret leakage, and unauthorized access.
+- `skill_execution` (Skill Execution): whether the expected skill was found and executed.
+- `skill_efficiency` (Efficiency): routing quality, workspace-aware skill reads, and productive tool use.
+- `accuracy` (Accuracy): final-answer correctness against the reference answer.
+- `goal_accuracy` (Goal Accuracy): whether the user's goal was achieved.
+- `behavior_check` (Behavior Check): whether the expected workflow behavior was followed.
-## Publication Recommendation
+
+
+## Freshness
-The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change.
+Regenerate this benchmark when the skill, evaluation dataset, target agent/model, evaluator version, environment, or scoring policy changes.
diff --git a/skills/cuopt-install/SKILL.md b/skills/cuopt-install/SKILL.md
index eb8d73be29..b412dbd299 100644
--- a/skills/cuopt-install/SKILL.md
+++ b/skills/cuopt-install/SKILL.md
@@ -14,6 +14,7 @@ metadata:
---
+
# cuOpt Install (user)
Install cuOpt to *use* it from Python, C, or as a REST server. For building cuOpt from source to contribute or modify it, see `cuopt-developer`.
diff --git a/skills/cuopt-install/evals/evals.json b/skills/cuopt-install/evals/evals.json
index 77cbdd59a1..6d17fa295c 100644
--- a/skills/cuopt-install/evals/evals.json
+++ b/skills/cuopt-install/evals/evals.json
@@ -9,5 +9,79 @@
"Uses the nvidia/cuopt Docker image tagged for CUDA 12 (e.g. nvidia/cuopt:latest-cuda12.9-py3.13), not a fabricated nvcr.io/* path",
"docker run command includes --gpus all and -p 8000:8000"
]
+ },
+ {
+ "id": "inst-eval-002-cuda-suffix-must-match",
+ "question": "nvidia-smi on my box reports CUDA 13. Which cuOpt Python package do I pip install, and does it matter which one I pick?",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The agent installs the cu13-suffixed package (cuopt-cu13) and explains that the package CUDA suffix must match the runtime CUDA — installing the cu12 package on a CUDA 13 runtime is a mismatch. It includes the NVIDIA package index in the command (pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu13), since cuOpt wheels are not on public PyPI without it.",
+ "expected_behavior": [
+ "Selects the cu13-suffixed package to match the reported CUDA major version",
+ "Includes --extra-index-url=https://pypi.nvidia.com in the pip command",
+ "Explains that the package CUDA suffix must match the installed CUDA runtime"
+ ]
+ },
+ {
+ "id": "inst-eval-003-python-implies-c-not-reverse",
+ "question": "I already pip installed the cuOpt Python package. Do I need to install anything else to get the C headers and shared library? And if I later only want the C API without Python, what changes?",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The agent explains the one-way dependency: cuopt-cuXX depends on libcuopt-cuXX, so installing the Python package already brings in the C library and headers — nothing further is needed. The reverse does not hold: installing libcuopt-cuXX on its own provides the C API but does not install the Python bindings. For a C-only setup, install libcuopt-cuXX standalone.",
+ "expected_behavior": [
+ "States that the Python package already pulls in the C library and headers as a dependency, so no extra install is needed",
+ "States that the reverse is not true — libcuopt-cuXX alone does not provide the Python API",
+ "Names libcuopt-cuXX as the standalone C-API package"
+ ]
+ },
+ {
+ "id": "inst-eval-004-unsupported-gpu",
+ "question": "I have a GTX 1080 in this machine. Can I run cuOpt on it?",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The agent answers no. cuOpt requires an NVIDIA GPU with Compute Capability 7.0 or higher (Volta or newer); the GTX 10xx series is Pascal and falls below that threshold. It names examples of supported hardware (V100, A100, H100, RTX 20xx/30xx/40xx) and does not offer a workaround or installation command that would appear to make the unsupported GPU work.",
+ "expected_behavior": [
+ "States that the GPU is not supported because cuOpt requires Compute Capability >= 7.0 (Volta or newer)",
+ "Identifies the GTX 10xx series as Pascal and therefore below the requirement",
+ "Names supported alternatives rather than suggesting a workaround for the unsupported GPU"
+ ]
+ },
+ {
+ "id": "inst-eval-005-underspecified-install-request",
+ "question": "Install cuOpt for me.",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The request is underspecified, so the agent asks the required questions before giving a command: which interface (Python, C, or REST server), which CUDA version is installed (checked with nvcc --version or nvidia-smi), which package manager is preferred (pip, conda, or Docker), and what the target environment is (local GPU machine, cloud instance, container/Kubernetes, or a remote host without a local GPU). It does not guess a default and emit an install command, and it does not run the install itself.",
+ "expected_behavior": [
+ "Asks which interface is wanted — Python, C, or REST server",
+ "Asks which CUDA version is installed, referencing nvcc --version or nvidia-smi",
+ "Asks whether pip, conda, or Docker is preferred",
+ "Does not silently assume defaults and emit a single install command"
+ ]
+ },
+ {
+ "id": "inst-eval-006-no-pip-and-conda-together",
+ "question": "I installed cuOpt with conda a while back. Should I also pip install it so I definitely have the latest?",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The agent advises against it: pip and conda installs of cuOpt are alternatives, not complements. Running the second one overrides the first and can leave a mismatched CUDA or package state. The agent tells the user to pick a single package manager and, if they want a newer build, to upgrade within the manager they already use rather than layering pip on top of conda.",
+ "expected_behavior": [
+ "Says not to install via both pip and conda",
+ "Explains that the second install overrides the first and risks a CUDA/package mismatch",
+ "Recommends upgrading within the already-chosen package manager instead"
+ ]
+ },
+ {
+ "id": "inst-eval-007-module-not-found-triage",
+ "question": "I installed cuOpt but `import cuopt` fails with ModuleNotFoundError: No module named 'cuopt'. How do I work out what went wrong?",
+ "expected_skill": "cuopt-install",
+ "expected_script": null,
+ "ground_truth": "The agent gives a triage sequence rather than a single guess: check that the package is actually present with pip list | grep cuopt, confirm which interpreter is being used with which python (a common cause is installing into a different environment than the one running the import), and reinstall with the correct --extra-index-url=https://pypi.nvidia.com if the package is missing. It also notes that installing only libcuopt-cuXX gives the C library without the Python bindings, which produces this same error.",
+ "expected_behavior": [
+ "Suggests checking pip list | grep cuopt to confirm the package is installed",
+ "Suggests checking which python to catch a wrong-environment mismatch",
+ "Mentions reinstalling with the NVIDIA extra index URL",
+ "Notes that a libcuopt-only install does not provide the Python module"
+ ]
}
]
diff --git a/skills/cuopt-install/skill-card.md b/skills/cuopt-install/skill-card.md
index 4eb431d444..7c8077e56c 100644
--- a/skills/cuopt-install/skill-card.md
+++ b/skills/cuopt-install/skill-card.md
@@ -7,16 +7,16 @@ This skill is ready for commercial/non-commercial use.
NVIDIA
### License/Terms of Use:
-Apache-2.0
+Apache 2.0
## Use Case:
-Developers and engineers installing the NVIDIA cuOpt GPU-accelerated optimization library for Python, C, or REST server deployment and verifying the installation.
+Developers and engineers installing NVIDIA cuOpt for GPU-accelerated optimization via Python, C, or REST server interfaces.
### Deployment Geography for Use:
Global
## Requirements / Dependencies:
**Requires API Key or External Credential:** [Not Specified]
-**Credential Type(s):** [None identified]
+**Credential Type(s):** [None identified]
Do not include secrets in prompts/logs/output; use least-privilege credentials; rotate keys as appropriate.
@@ -25,8 +25,10 @@ Risk: Review before execution as proposals could introduce incorrect or misleadi
Mitigation: Review and scan skill before deployment.
## Reference(s):
-- [verification_examples.md](references/verification_examples.md)
+- [Verification Examples](references/verification_examples.md)
- [cuOpt User Guide](https://docs.nvidia.com/cuopt/user-guide/latest/introduction.html)
+- [Docker Hub — nvidia/cuopt](https://hub.docker.com/r/nvidia/cuopt)
+- [cuOpt Examples](https://github.com/NVIDIA/cuopt-examples)
## Skill Output:
@@ -36,41 +38,41 @@ Mitigation: Review and scan skill before deployment.
**Other Properties Related to Output:** [None]
## Evaluation Agents Used:
-- `claude-code`
-- `codex`
+- Claude Code (`aws/anthropic/bedrock-claude-opus-4-8`)
+- Codex (`openai/openai/gpt-5.5`)
## Evaluation Tasks:
-Evaluated against 1 evaluation task in the NVSkills-Eval external profile (astra-sandbox environment).
+1 evaluation task (1 positive) run in isolated sandbox pods.
## Evaluation Metrics Used:
Reported benchmark dimensions:
-- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
-- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output.
-- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
-- Effectiveness: Checks whether the agent performs measurably better with the skill than without it.
-- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work.
+- Security: Checks for unsafe operations, secret leakage, and unauthorized access.
+- Correctness: Checks final-answer correctness against the reference answer.
+- Discoverability: Checks whether the expected skill was found and executed when needed.
+- Effectiveness: Checks whether the skill helped the agent complete the user's goal and expected workflow.
+- Efficiency: Checks routing quality, workspace-aware skill reads, and productive tool use.
Underlying evaluation signals used in this run:
-- `security`: Checks for unsafe operations, secret leakage, and unauthorized access.
-- `skill_execution`: Verifies that the agent loaded the expected skill and workflow.
-- `skill_efficiency`: Checks routing quality, decoy avoidance, and redundant tool usage.
-- `accuracy`: Grades final-answer correctness against the reference answer.
-- `goal_accuracy`: Checks whether the overall user task completed successfully.
-- `behavior_check`: Verifies expected behavior steps, including safety expectations.
-- `token_efficiency`: Compares token usage with and without the skill.
+- `security`: Unsafe operations, secret leakage, and unauthorized access.
+- `skill_execution`: Whether the expected skill was found and executed.
+- `skill_efficiency`: Routing quality, workspace-aware skill reads, and productive tool use.
+- `accuracy`: Final-answer correctness against the reference answer.
+- `goal_accuracy`: Whether the user's goal was achieved.
+- `behavior_check`: Whether the expected workflow behavior was followed.
## Evaluation Results:
-| Dimension | Num | `claude-code` | `codex` |
-|---|---:|---:|---:|
-| Security | 1 | 100% (+0%) | 100% (+0%) |
-| Correctness | 1 | 100% (+70%) | 97% (+22%) |
-| Discoverability | 1 | 100% (+100%) | 97% (+72%) |
-| Effectiveness | 1 | 100% (+74%) | 100% (+6%) |
-| Efficiency | 1 | 95% (+67%) | 96% (+69%) |
+| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
+|---|---:|---:|
+| Overall | 64% → 100% (+36 points) | 69% → 91% (+22 points) |
+| Security | 100% → 100% (±0 points) | 100% → 100% (±0 points) |
+| Correctness | 100% → 100% (±0 points) | 100% → 100% (±0 points) |
+| Discoverability | 50% → 100% (+50 points) | 50% → 94% (+44 points) |
+| Effectiveness | 70% → 100% (+30 points) | 95% → 100% (+5 points) |
+| Efficiency | 0% → 100% (+100 points) | 0% → 62% (+62 points) |
## Skill Version(s):
26.10.00 (source: frontmatter)
diff --git a/skills/cuopt-install/skill.oms.sig b/skills/cuopt-install/skill.oms.sig
index 05f2471408..7704380e95 100644
--- a/skills/cuopt-install/skill.oms.sig
+++ b/skills/cuopt-install/skill.oms.sig
@@ -1 +1 @@
-{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtaW5zdGFsbCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMzRlY2Y1OGZiMzA2NTkyYjNlNzdiYmQwNDVhMjNlZWZkZThjMTk5YjVkY2Y2OGI1ZDUyYTFlMWZmOGYyMjU5IgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlVHlwZSI6ICJodHRwczovL21vZGVsX3NpZ25pbmcvc2lnbmF0dXJlL3YxLjAiLAogICJwcmVkaWNhdGUiOiB7CiAgICAic2VyaWFsaXphdGlvbiI6IHsKICAgICAgIm1ldGhvZCI6ICJmaWxlcyIsCiAgICAgICJpZ25vcmVfcGF0aHMiOiBbCiAgICAgICAgIi5naXRodWIiLAogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0aWdub3JlIgogICAgICBdLAogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlCiAgICB9LAogICAgInJlc291cmNlcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogIkJFTkNITUFSSy5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiNzkyNDI0YWE0ZDJmZjNlZTE3ZGQyMWE0ZjY2NGJiZjE2NTkxYTg4NDM3NWIzNWIxZjQ2NTViMmFjNjIwNWIxMSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogIlNLSUxMLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICIzZDBhNWVmNGMzMGFiODY5MWRkMzZmZmE1ZWJkYzU5OWE0MDY1NWYyZWU2OWFmMTRhMmE2YzQwYjgzYzNjNTgxIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiYmVuY2htYXJrL2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjA5NmVhZTlhYmJkNzlhZTNjNzNiYmUwMGFkYmIwM2VhZTk2ZDViZDk0Y2E1N2M1MTlkOTIwMWI0ZDhkNmUyNmMiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJldmFscy9ldmFscy5qc29uIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI1YWZjMWFiMzExNzg5ZjQyY2ExZDgwMzllNTE5YTQxM2U1NWZhYmQxZTQzMWFkMDFjNzdhZTY3ODdhMTA4MzE1IgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy92ZXJpZmljYXRpb25fZXhhbXBsZXMubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImZjZGQzOTM5MTE3MWVlZWVjNWRmZDE1ZDM4ZDMyN2RiOTVjZGExNzg0YzlhNDdiNmZhZTBjMzRlZjYzYTZkYjAiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJlNWY5MzcxNGE3MmEzZGQ0NWZiNTFjZjU3NTE3Zjc3MzZkMmNkMDRjYTk0NDgyOTdjMWM3OWRjNzkxOTNlMDhjIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGUCMQCltHokYv84nyMomsZanO8oNtbda3MyIs0MBO4lt5OWyPNI7XD3DupBW1T38CaSjl4CMAFRiInC0rXc9YVVr2YEUefMIX+p7ipbHKnrrZOc17zMF8qCMhAVM8a4iqrq9TcsUQ==","keyid":""}]}}
\ No newline at end of file
+{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtaW5zdGFsbCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZjYwZDg1NTYxZTBhNTc4YmEzMWI1ZjVlNTNiNGJiZTNkYTQxNWQ3NTc4MDkyNDQyOTgzNmQ3NzkxZTNlNjczIgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlVHlwZSI6ICJodHRwczovL21vZGVsX3NpZ25pbmcvc2lnbmF0dXJlL3YxLjAiLAogICJwcmVkaWNhdGUiOiB7CiAgICAic2VyaWFsaXphdGlvbiI6IHsKICAgICAgImlnbm9yZV9wYXRocyI6IFsKICAgICAgICAiLmdpdGh1YiIsCiAgICAgICAgIi5naXQiLAogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiCiAgICAgIF0sCiAgICAgICJtZXRob2QiOiAiZmlsZXMiLAogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlCiAgICB9LAogICAgInJlc291cmNlcyI6IFsKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjFlZjU0NGE2MGZjMjEyM2ZiZjI4ZTg2ZjIxM2FmY2YzYjY0ODkyNjQ2ZWU3N2VjYWMyMTFhZjVjODk4ODEwMDkiLAogICAgICAgICJuYW1lIjogIkJFTkNITUFSSy5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjM3OTQwZTNlNzg1YTcxYmVmNTRjMDdjYWMyNjUzMjcyMThiMWNmNDE3NzA3OGQxZTY3YTI1MWFhYzc5ZTQxODciLAogICAgICAgICJuYW1lIjogIlNLSUxMLm1kIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiMDk2ZWFlOWFiYmQ3OWFlM2M3M2JiZTAwYWRiYjAzZWFlOTZkNWJkOTRjYTU3YzUxOWQ5MjAxYjRkOGQ2ZTI2YyIsCiAgICAgICAgIm5hbWUiOiAiYmVuY2htYXJrL2V2YWxzLmpzb24iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI1YWZjMWFiMzExNzg5ZjQyY2ExZDgwMzllNTE5YTQxM2U1NWZhYmQxZTQzMWFkMDFjNzdhZTY3ODdhMTA4MzE1IiwKICAgICAgICAibmFtZSI6ICJldmFscy9ldmFscy5qc29uIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZmNkZDM5MzkxMTcxZWVlZWM1ZGZkMTVkMzhkMzI3ZGI5NWNkYTE3ODRjOWE0N2I2ZmFlMGMzNGVmNjNhNmRiMCIsCiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy92ZXJpZmljYXRpb25fZXhhbXBsZXMubWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI0MzlkZjFlNDViYzZjNWNkZDQ4M2NlM2ZjMzU5OTA4NjY5NzdlNjViZjZiOGFhY2NkYThkY2FjODc3OWE0MDA2IiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMBYGoBDTzvUHmbNQQwR3+jNXrq14bztON3vmYnAEe8LdcLEaXewky16Y29obaZPdpgIwKGnwcBMgGo3GFS8yV1jsU7TMVmTtgObnClQgDl2tbcmVHbTP3msJU2AL5lH2jWVt","keyid":""}]}}
\ No newline at end of file