Skip to content

feat(cli): independent otdfctl releases + updates from origin/main#3268

Open
alkalescent wants to merge 10 commits intoDSPX-2655-migrate-otdfctlfrom
DSPX-2660-otdfctl-release-pipeline
Open

feat(cli): independent otdfctl releases + updates from origin/main#3268
alkalescent wants to merge 10 commits intoDSPX-2655-migrate-otdfctlfrom
DSPX-2660-otdfctl-release-pipeline

Conversation

@alkalescent
Copy link
Copy Markdown
Contributor

Proposed Changes

  • Add otdfctl component to platform release-please configuration for independent versioned releases
  • Tags follow the monorepo per-component pattern: otdfctl/v0.30.0
  • Register otdfctl/pkg/config/config.go as extra-file so release-please bumps the Version constant (already has // x-release-please-version marker)
  • Create release workflow that triggers on otdfctl/v* tags, builds 8 cross-platform binaries (darwin amd64/arm64, linux amd64/arm/arm64, windows amd64/arm/arm64), and uploads artifacts to the GitHub release

Files added/modified

File Change
release-please-config.main.json Add otdfctl package entry with extra-files
release-please-manifest.json Add "otdfctl": "0.30.0" version tracking
release-please-config.otdfctl.json New — component config for release/otdfctl/vX.Y branches
release-otdfctl.yaml New — build and upload workflow on release publish

PR Stack (DSPX-2654)

  1. feat(cli): migrate otdfctl into platform monorepo #3205 — Subtree merge + module path rewrite (DSPX-2655, DSPX-2656)
  2. feat(cli): Makefile and build scripts #3208 — Makefile and build scripts (DSPX-2657)
  3. feat(cli): add otdfctl to platform CI matrix #3221 — CI workflows (DSPX-2658)
  4. feat(cli): migrate e2e tests and fix lint errors #3236 — e2e tests and lint fixes (DSPX-2659)
  5. This PR — Release pipeline (DSPX-2660)

Checklist

  • I have added or updated unit tests
  • I have added or updated integration tests (if appropriate)
  • I have added or updated documentation

Testing Instructions

  • Verify JSON configs are valid: cat .github/release-please/release-please-config.main.json | jq .packages.otdfctl
  • Verify manifest version: cat .github/release-please/release-please-manifest.json | jq .otdfctl
  • Verify reusable_release-please.yaml config lookup: branch release/otdfctl/v0.30 → sanitized name otdfctl → resolves to release-please-config.otdfctl.json
  • Full release flow testable after merge by creating a manual release with tag otdfctl/v0.30.0

dsm20 and others added 4 commits April 6, 2026 22:56
Resolves [DSPX-2682](https://virtru.atlassian.net/browse/DSPX-2682),
depends on #3187

## Proposed Changes
- Adds strongly-typed sort support to `ListAttributes` RPC, following
the
pattern established in #3192 (ListNamespaces)
- Sortable fields: `name`, `created_at`, `updated_at` (ASC/DESC), with
backward-compatible fallback to `created_at DESC`
  - Includes CASE WHEN ordering in both `listAttributesDetail` and
`listAttributesSummary` SQL queries
## Changes
- **Proto**: `SortAttributesType` enum, `AttributesSort` message, `sort`
  field on `ListAttributesRequest` (max 1, buf.validate)
- **SQL**: CASE WHEN sort blocks in `attributes.sql` for both detail and
summary queries
  - **Go**: `GetAttributesSortParams()` helper in `utils.go`, wired into
`ListAttributes()` in `attributes.go`
- **Tests**: 9 unit tests for the helper, 5 integration tests covering
each sort field + direction + fallback

### Checklist

- [x] I have added or updated unit tests
- [x] I have added or updated integration tests (if appropriate)
- [x] I have added or updated documentation



[DSPX-2682]:
https://virtru.atlassian.net/browse/DSPX-2682?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Release Notes

* **New Features**
* Added sorting capability for attributes with options to sort by name,
creation date, or last updated date in ascending or descending order.

* **Documentation**
* Updated API documentation with new sorting parameters and clarified
timestamp parameter constraints.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Diego <74568547+dsm20@users.noreply.github.com>
### Proposed Changes

As per integration tests in
[listAttribute](#3223), this PR
does some refactoring of existing tests to use helpers, adds fuller test
coverage, and protovalidate tests.

Exact changes were as follows:
- Refactor ListNamespaces integration sort tests to use reusable helpers
(createSortTestNamespaces, createNamedSortTestNamespaces), matching the
pattern established in
[ListAttributes](#3223)
- Add missing sort direction tests for full coverage: created_at DESC,
fqn DESC, updated_at ASC
- Add API-level protovalidate test for ListNamespacesRequest.Sort
(validates max_items = 1 constraint)

### Checklist

- [ ] I have added or updated unit tests
- [x] I have added or updated integration tests (if appropriate)
- [ ] I have added or updated documentation

### Testing Instructions



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Tests**
* Refactored namespace sorting tests with reusable helpers for
deterministic setup and simpler assertions.
* Added coverage for missing ascending and descending sort orders
(created_at, fqn, updated_at) and ensured fallback behavior remains
correct.
* Added validator tests for list request sort parameters to confirm
single-sort acceptance and reject multiple-sort inputs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary

- Implements the **source-file codegen** approach for proto helper
generation
- Adds five convenience constructors (`ForToken`, `WithRequestToken`,
`ForClientID`, `ForEmail`, `ForUserName`) that live **in the
`authorizationv2` proto package** — no extra import needed
- Source files in `protocol/go/internal/authorization/v2/` have full IDE
support and standard unit tests; Go's `internal` package rule prevents
external consumers from importing them directly
- `protocol/codegen` (separate Go module, stdlib only) copies source
files into proto packages at build time, stripping the self-referencing
import and type qualifiers so the output compiles in-package
- Wired into `make proto-generate` after `buf generate` and before
`sdk/codegen`
- CI change detection broadened to trigger proto-generate checks on
Makefile, buf config, and codegen directory changes (not just `.proto`
files)

## Before / After

### Before

Constructing an `EntityIdentifier` requires 4 levels of proto nesting:

```go
req := &authorization.GetDecisionRequest{
    EntityIdentifier: &authorization.EntityIdentifier{
        Identifier: &authorization.EntityIdentifier_EntityChain{
            EntityChain: &entity.EntityChain{
                Entities: []*entity.Entity{{
                    EntityType: &entity.Entity_ClientId{ClientId: "opentdf"},
                    Category:   entity.Entity_CATEGORY_SUBJECT,
                }},
            },
        },
    },
    // ...
}
```

### After

One-line convenience constructors in the same proto package:

```go
req := &authorization.GetDecisionRequest{
    EntityIdentifier: authorization.ForClientID("opentdf"),
    // ...
}
```

All five constructors:

```go
authorization.ForToken("eyJhbGci...")        // from JWT
authorization.WithRequestToken()              // use request's Authorization header
authorization.ForClientID("opentdf")          // client ID subject
authorization.ForEmail("user@example.com")    // email subject
authorization.ForUserName("alice")            // username subject
```

## How it works

```
protocol/
├── codegen/                          # Separate Go module (stdlib only, own go.mod)
│   ├── go.mod
│   ├── main.go                       # Reads internal/, copies to target dirs
│   └── main_test.go                  # Import rewriting and stale file cleanup tests
└── go/
    ├── internal/                     # Source files (survive proto-generate, not importable externally)
    │   └── authorization/v2/
    │       ├── entity_identifier.go      # Normal Go file, full IDE support
    │       └── entity_identifier_test.go # Standard unit tests
    └── authorization/v2/             # Proto-generated (nuked and recreated)
        ├── authorization.pb.go           # buf generate output
        ├── authorization_grpc.pb.go      # buf generate output
        └── entity_identifier.gen.go      # Copied from internal/ at build time
```

Source files import the proto package explicitly for compilation/IDE
support. The codegen tool strips the self-referencing import and
qualifier prefix when copying, producing clean in-package code. All
source files are read and transformed before any existing `.gen.go`
files are removed, so a failed read won't leave the target directory
empty.

The codegen tool lives in `protocol/codegen/` with its own `go.mod`
(stdlib only), outside the `protocol/go/` tree. This means the Makefile
`find` cleanup only needs to exclude `internal/` — no complicated
exclusion patterns.

## Test plan

- [x] `cd protocol/codegen && GOWORK=off go test ./...` — import
rewriting and stale file cleanup tests pass
- [x] `cd protocol/codegen && GOWORK=off go run .` — generates `.gen.go`
with correct import rewriting
- [x] `go test ./protocol/go/internal/authorization/v2/...` — source
tests pass
- [x] `go build ./protocol/go/authorization/v2/...` — proto package
builds with generated helpers
- [x] `go test ./sdk/...` — no breakage from removing old sdk helper
files
- [x] `golangci-lint run` — 0 issues on all new files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added helper constructors to build entity identifiers from JWTs,
request tokens, client IDs, emails, and usernames.
* Added a dedicated codegen command to generate protocol helper sources.

* **Chores**
* Split protocol code generation into an independent helper target and
integrated it into the main generation flow.
* Broadened CI change detection to trigger protocol-related generation
when relevant files change.

* **Tests**
* Added tests validating codegen transformations and entity-identifier
constructors.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Mary Dickson <mary.dickson@virtru.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
🤖 I have created a release *beep* *boop*
---


##
[0.23.0](protocol/go/v0.22.0...protocol/go/v0.23.0)
(2026-04-07)


### Features

* **policy:** add sort support to ListAttributes API
([#3223](#3223))
([ec3312f](ec3312f))
* **sdk:** source-file codegen for EntityIdentifier helpers
([#3232](#3232))
([ee8177c](ee8177c))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
@alkalescent alkalescent requested review from a team as code owners April 7, 2026 19:23
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 7, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d0e7e967-56b1-4041-8106-484c237a04a9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch DSPX-2660-otdfctl-release-pipeline

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes an independent release pipeline for the otdfctl component. By integrating it into the existing release-please infrastructure and defining a new automated workflow, the changes ensure that otdfctl can be versioned and distributed separately from the rest of the monorepo, streamlining the release process for this specific tool.

Highlights

  • Release Configuration: Added otdfctl to the main release-please configuration and created a dedicated component configuration file for independent versioning.
  • Manifest Update: Registered otdfctl in the release-please manifest with an initial version of 0.30.0.
  • Automation: Configured the release pipeline to handle cross-platform binary builds and artifact uploads upon tagging.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/release-otdfctl.yaml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.


The pipeline flows with steady hand, / To ship the code across the land. / With tags in place and versions set, / The best release is coming yet.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions github-actions bot added comp:ci Github Actions Work size/s labels Apr 7, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request configures release-please for the otdfctl component by updating the main configuration, adding a component-specific configuration file, and updating the manifest. A suggestion was provided to add the bump-minor-pre-major setting to the new configuration file to ensure consistent versioning behavior for pre-1.0.0 versions.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 198.527369ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 101.362467ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 395.16523ms
Throughput 253.06 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 43.137576107s
Average Latency 429.610727ms
Throughput 115.91 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Resolves [DSPX-2685](https://virtru.atlassian.net/browse/DSPX-2685)

## Proposed Changes

- Adds strongly-typed sort support to `ListSubjectMappings` RPC,
following the
pattern established in #3223 (ListAttributes) and #3192 (ListNamespaces)
  - Sortable fields: `created_at`, `updated_at` (ASC/DESC), with
  backward-compatible fallback to `created_at DESC`

## Changes

  **Proto** — `service/policy/subjectmapping/subject_mapping.proto`
- `SortSubjectMappingsType` enum (`UNSPECIFIED`, `CREATED_AT`,
`UPDATED_AT`)
  - `SubjectMappingsSort` message (field + direction)
- `repeated SubjectMappingsSort sort = 11` on
`ListSubjectMappingsRequest` with `max_items = 1` constraint
  - Regenerated protos and docs

  **SQL** — `service/policy/db/queries/subject_mappings.sql`
- CASE WHEN ORDER BY blocks for `created_at` and `updated_at` (ASC/DESC
each)
  - Fallback `sm.created_at DESC` + tiebreaker `sm.id ASC`

**Go** — `service/policy/db/utils.go` +
`service/policy/db/subject_mappings.go`
- `GetSubjectMappingsSortParams()`: maps enum to SQL-compatible
field/direction strings
- `ListSubjectMappings` handler wired to call mapper and pass params to
sqlc query
- Extracted `sortFieldCreatedAt`/`sortFieldUpdatedAt` constants in
`utils.go` to resolve `goconst` lint across all sort helpers
**_(slightly out of scope but necessary to avoid goconst errors)_**

  **Tests**
- 9 unit tests for the enum mapper helper (nil, empty, unspecified, each
field + direction)
- 5 integration tests (created_at ASC/DESC, updated_at ASC/DESC,
unspecified fallback) using `createSortTestSubjectMappings` suite helper
- Protovalidate sort constraint test
(`Test_ListSubjectMappingsRequest_Sort`)

## Notes

- `name` sort is listed in the ticket but the `subject_mappings` table
has no `name` column
- `otdfctl --sort` flag deferred to a follow-up, consistent with #3192
and #3223

### Checklist

  - [x] I have added or updated unit tests
  - [x] I have added or updated integration tests (if appropriate)
  - [x] I have added or updated documentation

[DSPX-2685]:
https://virtru.atlassian.net/browse/DSPX-2685?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added sorting to the subject mappings list: sort by created_at or
updated_at, ASC/DESC, max one sort field per request.

* **Documentation**
* gRPC and OpenAPI docs updated to describe new sort enum, sort object,
and request sort field.

* **Tests**
* Added unit and integration tests covering sort parameter validation
and ordering behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy link
Copy Markdown
Member

@dmihalcik-virtru dmihalcik-virtru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you keep the lists alphabetized, i.e. insert the otdfctl blocks between the lib/* and protocol/* blocks?

dependabot bot and others added 5 commits April 8, 2026 17:18
…o 0.23.0 in /service (#3271)

Bumps
[github.com/opentdf/platform/protocol/go](https://github.com/opentdf/platform)
from 0.22.0 to 0.23.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/opentdf/platform/releases">github.com/opentdf/platform/protocol/go's
releases</a>.</em></p>
<blockquote>
<h2>protocol/go: v0.23.0</h2>
<h2><a
href="https://github.com/opentdf/platform/compare/protocol/go/v0.22.0...protocol/go/v0.23.0">0.23.0</a>
(2026-04-07)</h2>
<h3>Features</h3>
<ul>
<li><strong>policy:</strong> add sort support to ListAttributes API (<a
href="https://redirect.github.com/opentdf/platform/issues/3223">#3223</a>)
(<a
href="https://github.com/opentdf/platform/commit/ec3312f622dec7ed18ffa6033c86b248b47a420a">ec3312f</a>)</li>
<li><strong>sdk:</strong> source-file codegen for EntityIdentifier
helpers (<a
href="https://redirect.github.com/opentdf/platform/issues/3232">#3232</a>)
(<a
href="https://github.com/opentdf/platform/commit/ee8177c98bda4e7483fa26be736fe4965c00bf46">ee8177c</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/opentdf/platform/blob/otdfctl/v0.23.0/CHANGELOG.md">github.com/opentdf/platform/protocol/go's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/opentdf/otdfctl/compare/v0.22.0...v0.23.0">0.23.0</a>
(2025-07-01)</h2>
<h3>Features</h3>
<ul>
<li><strong>core:</strong> Import keys. (<a
href="https://redirect.github.com/opentdf/otdfctl/issues/617">#617</a>)
(<a
href="https://github.com/opentdf/otdfctl/commit/4dc69e6eaf2cdb23116b97ca2448bbbd57346f49">4dc69e6</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/opentdf/platform/commit/c9e4c9ef41746a4a43c49a53b6a953120851e19d"><code>c9e4c9e</code></a>
chore(main): release 0.23.0 (<a
href="https://redirect.github.com/opentdf/platform/issues/619">#619</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/4dc69e6eaf2cdb23116b97ca2448bbbd57346f49"><code>4dc69e6</code></a>
feat(core): Import keys. (<a
href="https://redirect.github.com/opentdf/platform/issues/617">#617</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/e41a1587071f1f176dc11530b0f3429e16afcef1"><code>e41a158</code></a>
docs(core): fix subject mapping update example command (<a
href="https://redirect.github.com/opentdf/platform/issues/616">#616</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/437b2fdf38616b7d574125694035718b9957f46a"><code>437b2fd</code></a>
chore(core): Modify create key docs. (<a
href="https://redirect.github.com/opentdf/platform/issues/615">#615</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/8457bd0a91b000dd347dc36f98a075e3fc08d2c0"><code>8457bd0</code></a>
chore(dependabot): bump github.com/go-viper/mapstructure/v2 from 2.2.1
to 2.3...</li>
<li><a
href="https://github.com/opentdf/platform/commit/32ca4eaf1e7b644ad693b517b947a8233b06aa65"><code>32ca4ea</code></a>
docs(core): improve documentation of actions in entitlement (<a
href="https://redirect.github.com/opentdf/platform/issues/612">#612</a>)</li>
<li>See full diff in <a
href="https://github.com/opentdf/platform/compare/otdfctl/v0.22.0...otdfctl/v0.23.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/opentdf/platform/protocol/go&package-manager=go_modules&previous-version=0.22.0&new-version=0.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…o 0.23.0 in /sdk (#3270)

Bumps
[github.com/opentdf/platform/protocol/go](https://github.com/opentdf/platform)
from 0.22.0 to 0.23.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/opentdf/platform/releases">github.com/opentdf/platform/protocol/go's
releases</a>.</em></p>
<blockquote>
<h2>protocol/go: v0.23.0</h2>
<h2><a
href="https://github.com/opentdf/platform/compare/protocol/go/v0.22.0...protocol/go/v0.23.0">0.23.0</a>
(2026-04-07)</h2>
<h3>Features</h3>
<ul>
<li><strong>policy:</strong> add sort support to ListAttributes API (<a
href="https://redirect.github.com/opentdf/platform/issues/3223">#3223</a>)
(<a
href="https://github.com/opentdf/platform/commit/ec3312f622dec7ed18ffa6033c86b248b47a420a">ec3312f</a>)</li>
<li><strong>sdk:</strong> source-file codegen for EntityIdentifier
helpers (<a
href="https://redirect.github.com/opentdf/platform/issues/3232">#3232</a>)
(<a
href="https://github.com/opentdf/platform/commit/ee8177c98bda4e7483fa26be736fe4965c00bf46">ee8177c</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/opentdf/platform/blob/otdfctl/v0.23.0/CHANGELOG.md">github.com/opentdf/platform/protocol/go's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/opentdf/otdfctl/compare/v0.22.0...v0.23.0">0.23.0</a>
(2025-07-01)</h2>
<h3>Features</h3>
<ul>
<li><strong>core:</strong> Import keys. (<a
href="https://redirect.github.com/opentdf/otdfctl/issues/617">#617</a>)
(<a
href="https://github.com/opentdf/otdfctl/commit/4dc69e6eaf2cdb23116b97ca2448bbbd57346f49">4dc69e6</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/opentdf/platform/commit/c9e4c9ef41746a4a43c49a53b6a953120851e19d"><code>c9e4c9e</code></a>
chore(main): release 0.23.0 (<a
href="https://redirect.github.com/opentdf/platform/issues/619">#619</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/4dc69e6eaf2cdb23116b97ca2448bbbd57346f49"><code>4dc69e6</code></a>
feat(core): Import keys. (<a
href="https://redirect.github.com/opentdf/platform/issues/617">#617</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/e41a1587071f1f176dc11530b0f3429e16afcef1"><code>e41a158</code></a>
docs(core): fix subject mapping update example command (<a
href="https://redirect.github.com/opentdf/platform/issues/616">#616</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/437b2fdf38616b7d574125694035718b9957f46a"><code>437b2fd</code></a>
chore(core): Modify create key docs. (<a
href="https://redirect.github.com/opentdf/platform/issues/615">#615</a>)</li>
<li><a
href="https://github.com/opentdf/platform/commit/8457bd0a91b000dd347dc36f98a075e3fc08d2c0"><code>8457bd0</code></a>
chore(dependabot): bump github.com/go-viper/mapstructure/v2 from 2.2.1
to 2.3...</li>
<li><a
href="https://github.com/opentdf/platform/commit/32ca4eaf1e7b644ad693b517b947a8233b06aa65"><code>32ca4ea</code></a>
docs(core): improve documentation of actions in entitlement (<a
href="https://redirect.github.com/opentdf/platform/issues/612">#612</a>)</li>
<li>See full diff in <a
href="https://github.com/opentdf/platform/compare/otdfctl/v0.22.0...otdfctl/v0.23.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/opentdf/platform/protocol/go&package-manager=go_modules&previous-version=0.22.0&new-version=0.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add otdfctl component to platform release-please configuration for
independent versioned releases with cross-platform binary artifacts.

- Add otdfctl package to release-please-config.main.json with
  extra-files pointing to pkg/config/config.go for version bumps
- Add otdfctl entry to release-please-manifest.json at v0.30.0
- Create release-please-config.otdfctl.json for release branch support
- Create release-otdfctl.yaml workflow: triggers on otdfctl/v* release
  tags, builds 8 cross-platform binaries via Makefile, uploads artifacts
  to GitHub release

DSPX-2660

Signed-off-by: Krish Suchak <suchak.krish@gmail.com>
@alkalescent alkalescent force-pushed the DSPX-2660-otdfctl-release-pipeline branch from 69d6f81 to 5af1d61 Compare April 8, 2026 18:10
@alkalescent alkalescent requested review from a team as code owners April 8, 2026 18:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 8, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 187.085103ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 106.040328ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 416.329362ms
Throughput 240.19 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.923824181s
Average Latency 406.699436ms
Throughput 122.18 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 8, 2026

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

  • examples
  • otdfctl
  • sdk
  • service
  • lib/fixtures
  • tests-bdd

See the workflow run for details.

@alkalescent alkalescent changed the title feat(cli): configure release pipeline for independent otdfctl releases feat(cli): independent otdfctl releases + updates from origin/main Apr 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:ci Github Actions Work size/s

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants