Skip to content

Commit 87bc8f8

Browse files
ramakrishnap-nvclaudesvc-nvskills-signing
authored
skills: consolidate three numerical-optimization API skills into one (#1489)
Merges `cuopt-numerical-optimization-api-python`, `-api-c`, and `-api-cli` into a single `cuopt-numerical-optimization-api` skill. - Shared content (LP/MILP/QP selection, QP rules, dual values, common issues) in `SKILL.md` - Interface-specific syntax and examples in `references/python_api.md`, `references/c_api.md`, `references/cli_api.md` - Assets reorganized under `assets/python/`, `assets/c/`, `assets/cli/` - Evals merged (9 total) - Updated `AGENTS.md`, `marketplace.json`, and cross-references 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com> Signed-off-by: nvskills-svc-account <svc-nvskills-signing@nvidia.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: nvskills-svc-account <svc-nvskills-signing@nvidia.com>
1 parent 3f688aa commit 87bc8f8

81 files changed

Lines changed: 636 additions & 2386 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude-plugin/marketplace.json

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,10 @@
3333
"description": "Numerical optimization (LP, MILP, QP) — concepts, problem-text parsing, and formulation patterns. What LP, MILP, and QP are, required formulation questions, modeling elements, common patterns, and how to parse problem statements (parameters, constraints, decisions, objective). Domain concepts; no API or interface."
3434
},
3535
{
36-
"name": "cuopt-numerical-optimization-api-python",
37-
"source": "./skills/cuopt-numerical-optimization-api-python",
36+
"name": "cuopt-numerical-optimization-api",
37+
"source": "./skills/cuopt-numerical-optimization-api",
3838
"skills": "./",
39-
"description": "Solve LP, MILP, and QP (beta) with the Python API. Use when the user asks about optimization with linear or quadratic objectives, linear constraints, integer variables, scheduling, resource allocation, facility location, production planning, portfolio optimization, or least squares."
40-
},
41-
{
42-
"name": "cuopt-numerical-optimization-api-c",
43-
"source": "./skills/cuopt-numerical-optimization-api-c",
44-
"skills": "./",
45-
"description": "LP, MILP, and QP (beta) with cuOpt — C API only. Use when the user is embedding LP, MILP, or QP in C/C++."
46-
},
47-
{
48-
"name": "cuopt-numerical-optimization-api-cli",
49-
"source": "./skills/cuopt-numerical-optimization-api-cli",
50-
"skills": "./",
51-
"description": "LP, MILP, and QP (beta) with cuOpt — CLI only (MPS files, cuopt_cli). Use when the user is solving LP, MILP, or QP from MPS via command line."
39+
"description": "LP, MILP, and QP (beta) with cuOpt — Python, C, and CLI. Use when the user is solving LP, MILP, or QP with any cuOpt interface."
5240
},
5341
{
5442
"name": "cuopt-multi-objective-exploration",

AGENTS.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ AI agent skills for NVIDIA cuOpt optimization engine. Skills live in **`skills/`
1818
### Installation
1919
- `skills/cuopt-install/` — User install for Python, C, and server (pip, conda, Docker, verification). For building cuOpt from source, see `skills/cuopt-developer/`.
2020

21-
### API (implementation; one interface per skill)
22-
- `skills/cuopt-numerical-optimization-api-python/` (LP, MILP, QP)
23-
- `skills/cuopt-numerical-optimization-api-c/` (LP, MILP, QP)
24-
- `skills/cuopt-numerical-optimization-api-cli/` (LP, MILP, QP)
21+
### API (implementation)
22+
- `skills/cuopt-numerical-optimization-api/` (LP, MILP, QP — Python, C, CLI; interface-specific details in `references/`)
2523
- `skills/cuopt-routing-api-python/`
2624
- `skills/cuopt-server-api-python/` (deploy + client)
2725

docs/cuopt/source/convex-features.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ The convex optimization solvers for Linear Programming (LP), Quadratic Programmi
3939
- ✓
4040
-
4141
-
42+
* - Pyomo
43+
- ✓
44+
-
45+
-
4246

4347
.. note::
4448
QCQP/SOCP support is currently in **beta**, and is only supported in CVXPY among modeling languages. We hope to add support for QCQP/SOCP in other modeling languages soon.

docs/cuopt/source/introduction.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ cuOpt supports the following APIs:
137137
- `GAMS <https://www.gams.com/>`_
138138
- `PuLP <https://pypi.org/project/PuLP/>`_
139139
- `JuMP <https://github.com/jump-dev/cuOpt.jl>`_
140+
- `Pyomo <https://www.pyomo.org/>`_
141+
- `CVXPY <https://www.cvxpy.org/>`_
140142

141143

142144
==================================

docs/cuopt/source/milp-features.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ The MILP solver can be accessed in the following ways:
1919
- GAMS
2020
- PuLP
2121
- JuMP
22+
- Pyomo
2223

2324
- **C API**: A native C API that provides direct low-level access to cuOpt's MILP solver, enabling integration into any application or system that can interface with C.
2425

docs/cuopt/source/thirdparty_modeling_languages/index.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,15 @@ JuMP Support
2828

2929
JuMP can be used with near zero code changes: simply switch to cuOpt as a solver to solve linear and mixed-integer programming problems.
3030
Please refer to the `JuMP documentation <https://github.com/jump-dev/cuOpt.jl>`_ for more information.
31+
32+
--------------------------
33+
Pyomo Support
34+
--------------------------
35+
36+
Pyomo models can be used with near zero code changes via cuOpt's direct solver interface: simply select cuOpt as the solver to solve linear and mixed-integer programming problems. Please refer to the `Pyomo documentation <https://www.pyomo.org/>`_ for more information.
37+
38+
--------------------------
39+
CVXPY Support
40+
--------------------------
41+
42+
CVXPY can be used with near zero code changes: simply select cuOpt as the solver to solve linear and quadratic programs, as well as QCQP/SOCP problems (beta). Please refer to the `CVXPY documentation <https://www.cvxpy.org/>`_ for more information.

skills/cuopt-multi-objective-exploration/BENCHMARK.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the s
77
## Evaluation Summary
88

99
- Skill: `cuopt-multi-objective-exploration`
10-
- Evaluation date: 2026-06-29
10+
- Evaluation date: 2026-07-02
1111
- NVSkills-Eval profile: `external`
1212
- Environment: `astra-sandbox`
1313
- Dataset: 5 evaluation tasks
@@ -55,10 +55,10 @@ Task composition is derived from the evaluation dataset when possible. Entries w
5555
| Dimension | Num | `claude-code` | `codex` |
5656
|---|---:|---:|---:|
5757
| Security | 5 | 100% (+0%) | 100% (+0%) |
58-
| Correctness | 5 | 90% (+0%) | 87% (-8%) |
59-
| Discoverability | 5 | 78% (-2%) | 73% (-22%) |
60-
| Effectiveness | 5 | 85% (-6%) | 85% (+2%) |
61-
| Efficiency | 5 | 75% (-3%) | 71% (-21%) |
58+
| Correctness | 5 | 90% (+54%) | 68% (+15%) |
59+
| Discoverability | 5 | 80% (+60%) | 75% (+50%) |
60+
| Effectiveness | 5 | 92% (+40%) | 63% (-1%) |
61+
| Efficiency | 5 | 80% (+40%) | 76% (+35%) |
6262

6363
Score values show skill-assisted performance. Values in parentheses show uplift versus the no-skill baseline when baseline data is available.
6464

skills/cuopt-multi-objective-exploration/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ sort the survivors to form the frontier
116116

117117
Practical notes:
118118

119-
- **Warm-start LP sweeps.** For an LP frontier, carry the previous solve's PDLP warmstart data into the next to cut solve time. Per cuOpt this is **LP-only**: a MILP solve doesn't take a PDLP warmstart (you can optionally seed a MIP start instead). See `cuopt-numerical-optimization-api-python` for the calls.
120-
- **Cap each MILP solve.** Set a per-solve time limit on MILP sweeps (see `cuopt-numerical-optimization-api-python`) — a sweep is many solves, and branch-and-bound can over-spend certifying optimality past a tiny gap, while cuOpt sets no limit by default and won't warn. Report the points as optimal *to the gap you set*, not certified optimal.
119+
- **Warm-start LP sweeps.** For an LP frontier, carry the previous solve's PDLP warmstart data into the next to cut solve time. Per cuOpt this is **LP-only**: a MILP solve doesn't take a PDLP warmstart (you can optionally seed a MIP start instead). See `cuopt-numerical-optimization-api` for the calls.
120+
- **Cap each MILP solve.** Set a per-solve time limit on MILP sweeps (see `cuopt-numerical-optimization-api`) — a sweep is many solves, and branch-and-bound can over-spend certifying optimality past a tiny gap, while cuOpt sets no limit by default and won't warn. Report the points as optimal *to the gap you set*, not certified optimal.
121121
- **Filter dominated points.** A correct sweep can still emit dominated points (especially weighted-sum near the hull, or MILP). Drop them; they are not part of the frontier.
122122
- **Resolution is a budget.** Curve fidelity trades against solve count. Start coarse to see the shape, then refine the grid only where the curve bends.
123123
- **Spend the budget where the slope changes (LP/QP).** Because the ε-constraint dual is the frontier's local slope, compare it across solved points: where it barely changes, the curve is nearly straight — interpolate rather than add solves; where it jumps by more than the solve tolerance, the frontier bends between those points — refine there (smaller differences are solver noise, not curvature). This concentrates solves where the curve actually bends instead of spreading them over a uniform grid. On MILP, judge where to refine from the gaps between primal objective values instead.
@@ -134,5 +134,5 @@ Practical notes:
134134

135135
This skill is solver- and interface-agnostic. The per-solve mechanics — building the objective, adding the ε constraints, passing a warm start, reading status — live in the API skills:
136136

137-
- `cuopt-numerical-optimization-api-python` / `-api-c` / `-api-cli` — LP, MILP, QP solves.
137+
- `cuopt-numerical-optimization-api` — LP, MILP, QP solves (Python, C, CLI).
138138
- `cuopt-routing-api-python` — the same frontier workflow applies to routing tradeoffs (distance vs. vehicles vs. time).

skills/cuopt-multi-objective-exploration/skill-card.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ NVIDIA <br>
99
### License/Terms of Use: <br>
1010
Apache-2.0 <br>
1111
## Use Case: <br>
12-
Developers and engineers exploring tradeoffs between competing objectives in optimization problems, using cuOpt to trace the Pareto frontier and interpret exchange rates rather than collapsing to a single weighted answer. <br>
12+
Developers and engineers exploring multi-objective tradeoffs use this skill to orchestrate repeated cuOpt solves and trace Pareto frontiers, enabling informed tradeoff decisions rather than single-objective optima. <br>
1313

1414
### Deployment Geography for Use: <br>
1515
Global <br>
1616

1717
## Requirements / Dependencies: <br>
1818
**Requires API Key or External Credential:** [Not Specified] <br>
19-
**Credential Type(s):** [None identified] <br>
19+
**Credential Type(s):** [None identified] <br>
2020

2121
Do not include secrets in prompts/logs/output; use least-privilege credentials; rotate keys as appropriate. <br>
2222

@@ -31,7 +31,7 @@ Mitigation: Review and scan skill before deployment. <br>
3131

3232
## Skill Output: <br>
3333
**Output Type(s):** [Analysis, Configuration instructions] <br>
34-
**Output Format:** [Markdown with inline formulations and solver-call patterns] <br>
34+
**Output Format:** [Markdown with structured frontier tables and tradeoff commentary] <br>
3535
**Output Parameters:** [1D] <br>
3636
**Other Properties Related to Output:** [None] <br>
3737

@@ -42,7 +42,7 @@ Mitigation: Review and scan skill before deployment. <br>
4242

4343

4444
## Evaluation Tasks: <br>
45-
Evaluated against 5 internal evaluation tasks (4 positive skill-activation, 1 negative). <br>
45+
Evaluated against 5 internal tasks (4 positive skill-activation cases, 1 negative activation case) in the astra-sandbox environment using NVSkills-Eval external profile. <br>
4646

4747
## Evaluation Metrics Used: <br>
4848
Reported benchmark dimensions: <br>
@@ -67,10 +67,10 @@ Underlying evaluation signals used in this run: <br>
6767
| Dimension | Num | `claude-code` | `codex` |
6868
|---|---:|---:|---:|
6969
| Security | 5 | 100% (+0%) | 100% (+0%) |
70-
| Correctness | 5 | 90% (+0%) | 87% (-8%) |
71-
| Discoverability | 5 | 78% (-2%) | 73% (-22%) |
72-
| Effectiveness | 5 | 85% (-6%) | 85% (+2%) |
73-
| Efficiency | 5 | 75% (-3%) | 71% (-21%) |
70+
| Correctness | 5 | 90% (+54%) | 68% (+15%) |
71+
| Discoverability | 5 | 80% (+60%) | 75% (+50%) |
72+
| Effectiveness | 5 | 92% (+40%) | 63% (-1%) |
73+
| Efficiency | 5 | 80% (+40%) | 76% (+35%) |
7474

7575
## Skill Version(s): <br>
7676
26.08.00 (source: frontmatter) <br>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +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":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtbXVsdGktb2JqZWN0aXZlLWV4cGxvcmF0aW9uIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcxMmY0NDMwMjNkYTc5ODNmNzliOGIwNzlmN2YzODljM2IzNDJmNGY1NGZiNWViZGRhZmM1ODZiMjZlM2ZkYzIiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vbW9kZWxfc2lnbmluZy9zaWduYXR1cmUvdjEuMCIsCiAgInByZWRpY2F0ZSI6IHsKICAgICJzZXJpYWxpemF0aW9uIjogewogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZSwKICAgICAgImhhc2hfdHlwZSI6ICJzaGEyNTYiLAogICAgICAibWV0aG9kIjogImZpbGVzIiwKICAgICAgImlnbm9yZV9wYXRocyI6IFsKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGlnbm9yZSIsCiAgICAgICAgIi5naXRodWIiCiAgICAgIF0KICAgIH0sCiAgICAicmVzb3VyY2VzIjogWwogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICIzNzhjNmMzMDY0YzVkNDE0ZjQ5M2M2NTZjODQ2YWZlYWMyMmMyMWU4NjhmY2MzMzRlMThiNGNjMmFmYjIwMjM4IiwKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICI5NWFhOTRiNGViNzQwOTE5YTI4MTFmNWY4OWRkZmVhZmVjZTkwNjcxNjJjMzE4NzRlYTBkYTM0ZGM4NWJhZDEyIiwKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogImQ5NTYxNWVlMzI3NTE3NzFmMzA3N2YxNzM2ODNmMDRmZDE3YWQ1N2NlODJhZTliMTI0Y2JkODNmYWFiZDYwYmIiLAogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICJiM2Y4NDZhMzExZDc5Zjg4ZTNhYzlmNGJmZmM3YjM4MDI4OGM5Nzk1ZTA3YzNhN2ViZWYxYjY2YWE0MGU3YTEzIiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIKICAgICAgfQogICAgXQogIH0KfQ==","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMC4Gw/I2q9Fy5WQ5dDlqOtYhZcp3y08aFKflnEzfYDWsZHEjlAIbutAhexTr80iANQIwIrWIJX73+kbJi/HXWsYHWBKF+3oqu0Yrkqgg2OFrlmdaDGzwZTKSFKqenudCk401","keyid":""}]}}
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":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtbXVsdGktb2JqZWN0aXZlLWV4cGxvcmF0aW9uIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ0ZWQwYmNiNzUxNzZjNTRiNDM2M2QzNWYyNDIxYTc0ZWVlMWJiZWNkZWU1MTI1MmQ4Y2VjNjE3MGZmZTIyOTQiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vbW9kZWxfc2lnbmluZy9zaWduYXR1cmUvdjEuMCIsCiAgInByZWRpY2F0ZSI6IHsKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjE1MDk5YzY0OWU1NDIxZmE3MGE4MDIzMmQyNjVjOTFmNmZmZjFjOWVlMTJmZmQ2YTU5NWEwYTJkMTY0YTc4YmYiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogImM4YWM4ZDFjOGVmNWQxMzNhZWM5NjAzYzQ0NDcyZjFjNmRjMTUzMWFiMDI4MTQ5OWQ2NmIxMjlkYjE5ZGUwYjgiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiZDk1NjE1ZWUzMjc1MTc3MWYzMDc3ZjE3MzY4M2YwNGZkMTdhZDU3Y2U4MmFlOWIxMjRjYmQ4M2ZhYWJkNjBiYiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjZiMDRlMjA5ZjBmMmVlM2ZlY2U2ODIzZTExZDk5OTFiMTFlYTk4OWQxNzA0NTU2ZjE4MmVlNjU2NDhhMzY0M2YiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIgogICAgICB9CiAgICBdLAogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJoYXNoX3R5cGUiOiAic2hhMjU2IiwKICAgICAgIm1ldGhvZCI6ICJmaWxlcyIsCiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlLAogICAgICAiaWdub3JlX3BhdGhzIjogWwogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGh1YiIKICAgICAgXQogICAgfQogIH0KfQ==","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMC4asyIg/eRtrkPWMJYEmwB+2/Hkui6UY1KiyF7KLlRvc9fLq8w0LH+GoZbzPQx/+gIwU1DCqQDuuKmt/zGX6ruFfoxv8Ewuqsrv5AM0DVo/AzIuWtoLqMgk2bW1+NE3I0v8","keyid":""}]}}

0 commit comments

Comments
 (0)