Skip to content

feat(cli): Build migration plan#3297

Merged
c-r33d merged 4 commits intoDSPX-2655-migrate-otdfctlfrom
step-3-migrate-policy
Apr 13, 2026
Merged

feat(cli): Build migration plan#3297
c-r33d merged 4 commits intoDSPX-2655-migrate-otdfctlfrom
step-3-migrate-policy

Conversation

@c-r33d
Copy link
Copy Markdown
Contributor

@c-r33d c-r33d commented Apr 10, 2026

Summary

Implements the dry-run planner for migrate namespacedpolicy, the unified CLI entrypoint for migrating legacy (unnamespaced) policy objects into target namespaces.

The planner builds a full graph plan before any writes, covering actions, subject condition sets, subject mappings, registered resources, and obligation triggers. It runs a staged pipeline:

  • Retrieve legacy candidates from the platform API, including dependent objects needed for namespace derivation
  • Reduce dependency-loaded actions and SCS to only those actually referenced by in-scope objects
  • Derive target namespaces per object type, including fan-out for actions and SCS referenced from multiple namespaces
  • Resolve each derived placement against existing target-side objects (already migrated, existing standard action, needs create, or unresolved)
  • Finalize into an executable plan that preserves per-target status and rewritten dependency bindings for downstream creates

CLI surface

  • migrate namespacedpolicy --scope=<csv> --output=<path> — writes the plan as JSON
  • migrate prune namespacedpolicy --scope=<csv> — command scaffold, not yet implemented
  • --scope accepts actions, subject-condition-sets, subject-mappings, registered-resources, obligation-triggers
  • --commit and --interactive flags are wired but not yet implemented
  • All commands are hidden pending completion

Key design decisions

  • Scope expansion is automatic: subject-mappings pulls in actions and subject-condition-sets; registered-resources and obligation-triggers pull in actions
  • Subject mapping resolution is dependency-aware — it only resolves once its action and SCS dependencies are satisfiable in the same target namespace
  • Standard actions resolve by matching existing namespaced standard actions; no create needed
  • Registered resource namespace detection requires all RAAV attribute values to agree on a single namespace; ambiguous cases are recorded as unresolved
  • Missing target namespaces are fatal planning errors, not planned mutations
  • Canonical comparison uses explicit field extraction into plain Go types (not protobuf serialization) for deterministic cross-object equality

Not yet implemented

  • Executor/commit behavior (create calls, label writes, manifest rewrite with target IDs)
  • Interactive per-scope confirmation
  • migrate prune namespacedpolicy live-graph evaluation
  • Artifact schema projection (metadata, summary, skipped sections)

Summary by CodeRabbit

  • New Features

    • Implemented namespaced-policy migration workflow with dry-run planning support
    • Generates migration plans as JSON output based on specified scopes
    • Validates configuration and produces executable migration plans
  • Documentation

    • Updated migration guide to clarify dry-run mode is available and --commit is not yet implemented

@c-r33d c-r33d requested review from a team as code owners April 10, 2026 16:01
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 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: 7827b88f-c5e4-4aaf-ae99-b5d1b07e6bc0

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
📝 Walkthrough

Walkthrough

This PR implements the previously-unimplemented namespaced-policy migration workflow in otdfctl. The changes introduce a complete planning system that retrieves policy objects, derives target namespaces, resolves existing entities, and constructs executable migration plans in dry-run mode. The command now reads scope and output flags, validates options, orchestrates a multi-phase planning pipeline, and writes the resulting plan as JSON to a file.

Changes

Cohort / File(s) Summary
Command Handler
otdfctl/cmd/migrate/namespacedPolicy.go, otdfctl/docs/man/migrate/namespaced-policy.md
Implemented the migration command to construct a namespacedpolicy planner, execute Plan(), validate flags, and write the plan JSON to the specified output file. Updated documentation to reflect dry-run planning capability and clarify that --commit is not yet implemented.
Scope Management
otdfctl/migrations/namespacedpolicy/scopes.go, otdfctl/migrations/namespacedpolicy/scopes_test.go
Added scope parsing, validation, and expansion logic. Parses comma-separated scope CSV, validates against supported scopes, enforces dependency expansion (e.g., subject-mappings requires actions), and provides predicates for scope membership checks.
Planning Orchestration
otdfctl/migrations/namespacedpolicy/planner.go, otdfctl/migrations/namespacedpolicy/planner_test.go
Implemented the Planner orchestrator that sequences five planning phases: retrieve candidates, list namespaces, derive targets, list existing targets, and resolve/finalize. Defines PolicyClient interface for data access and Plan() method as the primary entry point.
Data Retrieval
otdfctl/migrations/namespacedpolicy/retrieve.go, otdfctl/migrations/namespacedpolicy/retrieve_test.go
Implemented paginated retrieval of policy objects (actions, subject condition sets, mappings, registered resources, obligation triggers, namespaces) via PolicyClient list APIs. Filters legacy namespaces and deduplicates results by object ID.
Dependency Reduction
otdfctl/migrations/namespacedpolicy/reduce.go, otdfctl/migrations/namespacedpolicy/reduce_test.go
Filters retrieved candidates based on requested scopes. Computes required entity IDs by analyzing dependencies within included scopes and removes unreferenced actions/condition sets.
Target Derivation
otdfctl/migrations/namespacedpolicy/derived.go, otdfctl/migrations/namespacedpolicy/derived_test.go
Transforms retrieved policy objects and namespaces into derived targets with namespace references and action/entity relationships. Builds lookup maps for bindings and tracks action references by kind (subject-mapping, registered-resource, obligation-trigger).
Canonical Comparison
otdfctl/migrations/namespacedpolicy/canonical.go, otdfctl/migrations/namespacedpolicy/canonical_test.go
Implements deterministic canonicalization helpers for policy structures via normalized JSON keys. Enables reliable comparison of semantically equivalent entities despite ordering/whitespace differences across obligation triggers, registered resources, and subject condition sets.
Target Resolution
otdfctl/migrations/namespacedpolicy/resolved.go, otdfctl/migrations/namespacedpolicy/resolved_test.go
Resolves derived targets against existing policy objects. Classifies each target as already-migrated, existing-standard, needs-create, or unresolved. Enforces dependency consistency for subject mappings and validates canonically-equivalent matches.
Plan Finalization
otdfctl/migrations/namespacedpolicy/finalize_plan.go, otdfctl/migrations/namespacedpolicy/finalize_plan_test.go
Converts resolved targets into an executable Plan with binding relationships. Creates per-namespace placement entries, synthesizes target bindings for subject mappings/registered resources/obligation triggers, and records unresolved/unused entities.
Plan Data Model
otdfctl/migrations/namespacedpolicy/plan.go, otdfctl/migrations/namespacedpolicy/plan_test.go
Defines the Plan struct and supporting types representing migration output: ActionPlan, SubjectConditionSetPlan, SubjectMappingPlan, RegisteredResourcePlan, ObligationTriggerPlan with target status tracking, binding relationships, and namespace bookkeeping. Provides lookup methods and deterministic ordering utilities.
Test Helpers
otdfctl/migrations/namespacedpolicy/test_helpers_test.go
Provides test utility constructors for policy protocol objects: namespaces, attribute values, registered resources, and action-attribute-value wrappers.

Suggested labels

comp:policy, docs

Suggested reviewers

  • elizabethhealy
  • jakedoublev
  • alkalescent

Poem

🐰 The namespace policy migration hops along,
Deriving targets, resolving right from wrong,
Through scopes and phases, the planner leaps true,
Canonical equals make comparisons new,
Now dry-run planning has come into view! 🌟


🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.72% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat(CLI): Build migration plan' accurately describes the main feature being implemented—a migration planning system for the CLI that constructs a full graph plan for legacy policy objects before any writes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch step-3-migrate-policy

Warning

Review ran into problems

🔥 Problems

Timed out fetching pipeline failures after 30000ms


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.

@github-actions github-actions bot added comp:ci Github Actions Work size/xl labels Apr 10, 2026
@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 introduces the dry-run planning capability for the migrate namespacedpolicy CLI command, enabling users to preview the migration of legacy policy objects into target namespaces. It also includes significant infrastructure updates to prepare for the migration of the otdfctl repository into the opentdf/platform monorepo, along with updated documentation and improved CLI tooling.

Highlights

  • Dry-run Planner Implementation: Implemented a dry-run planner for migrate namespacedpolicy that builds a full graph plan, including dependency resolution and namespace derivation, before executing any changes.
  • CLI Command Surface: Added migrate namespacedpolicy and migrate prune namespacedpolicy commands, with support for scope selection and JSON output for plans.
  • Repository Migration Preparation: Added an ADR and updated project configuration files (.gitignore, Makefile, Dockerfile, go.work) to support the migration of the otdfctl CLI into the opentdf/platform monorepo.
  • Documentation and Tooling: Added comprehensive manual pages for CLI commands and updated the changelog to reflect recent features and bug fixes.

🧠 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/** (3)
    • .github/workflows/checks.yaml
    • .github/workflows/nightly-checks.yaml
    • .github/workflows/pr-checks.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 policy moves to a brand new home, Where namespaces flourish and logic will roam. A dry-run is planned to keep data secure, With migration tools that are robust and pure.

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.

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 migrates the otdfctl CLI into the opentdf/platform monorepo, including necessary updates to build scripts, Dockerfiles, and documentation. Several bugs were identified in the CLI command handlers where stale objects were being used in success responses and potential nil pointer dereferences existed in command mounting logic.

Comment thread otdfctl/cmd/execute.go
Comment thread otdfctl/cmd/policy/attributeValues.go
Comment thread otdfctl/cmd/policy/attributeValues.go
Comment thread otdfctl/cmd/policy/attributes.go
@c-r33d c-r33d force-pushed the step-3-migrate-policy branch from fad3c39 to 69593e3 Compare April 10, 2026 17:07
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

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 420.114192ms
Throughput 238.03 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.163664193s
Average Latency 399.796117ms
Throughput 124.49 requests/second

@c-r33d c-r33d force-pushed the step-3-migrate-policy branch from 69593e3 to fa5c65d Compare April 10, 2026 17:25
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

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 392.393949ms
Throughput 254.85 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.292727063s
Average Latency 400.947299ms
Throughput 124.09 requests/second

@c-r33d
Copy link
Copy Markdown
Contributor Author

c-r33d commented Apr 10, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@c-r33d c-r33d changed the title Step 3 migrate policy feat(CLI): Build migration plan Apr 10, 2026
@c-r33d c-r33d changed the title feat(CLI): Build migration plan feat(cli): Build migration plan Apr 10, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 10

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@otdfctl/cmd/migrate/namespacedPolicy.go`:
- Around line 41-47: The CLI currently accepts but ignores the --interactive
flag; add the same fail-fast behavior used for --commit by reading the
"interactive" flag from cmd.InheritedFlags() (similar to how `commit, err :=
cmd.InheritedFlags().GetBool("commit")` is handled) and, if true, call
cli.ExitWithError with a clear message like "--interactive is not supported yet"
and a matching error; place this check in the same namespaced-policy handling
block (where `commit` is checked) so both unsupported flags are rejected
consistently.
- Around line 67-81: The writeNamespacedPolicyPlan function currently defers
file.Close() which swallows any error from the final file flush; change the
logic to capture the error from encoder.Encode(plan) then explicitly close the
file and return the close error if present (otherwise return the encode error).
Update writeNamespacedPolicyPlan so it checks and returns errors from both
json.Encoder.Encode and file.Close instead of only returning encoder.Encode's
result with a deferred close.

In `@otdfctl/docs/man/migrate/namespaced-policy.md`:
- Around line 19-27: The documentation for the namespaced-policy migrate dry-run
still includes a copyable example that uses the unsupported --commit flag;
update the namespaced-policy man page by removing the example invocation that
includes --commit (or rewrite it to use only supported flags like --output and
--scope) so the examples match the note that "--commit is not implemented yet
for namespaced-policy" and the parent migrate's shared flags; search for the
example command string containing "--commit" in namespaced-policy.md and delete
or replace that example accordingly.

In `@otdfctl/migrations/namespacedpolicy/canonical.go`:
- Around line 220-229: The current sortByJSON function computes a separate keys
slice once then calls sort.SliceStable on items, but keys are not moved with
items during swaps, making the sort incorrect; fix by pairing each item with its
JSON key (e.g., create a slice of structs like {key string; value T}), sort that
slice by key using sort.SliceStable, and then rewrite the original items slice
in the new order so that the JSON keys stay attached to their elements; refer to
sortByJSON, keys, and items to locate and implement this change.

In `@otdfctl/migrations/namespacedpolicy/finalize_plan.go`:
- Around line 469-479: The addActionIssue function currently deduplicates by
scanning f.unresolved.Actions (checking issue.Source.GetId(),
sameNamespace(issue.Namespace, namespace) and issue.Reason) which is O(n);
replace this linear scan with a map-based set keyed by a stable tuple (sourceID,
namespaceID, reason) to achieve O(1) dedupe: introduce a map[string]struct{}
field on planFinalizer (or inside f.unresolved) and compute a key from
action.GetId(), namespace.GetId() (or use sameNamespace canonical id) and
reason; check/insert into that map before appending the new ActionIssue to
f.unresolved.Actions (and apply the same pattern to other similar add*Issue
methods such as where ActionIssue is constructed).

In `@otdfctl/migrations/namespacedpolicy/plan.go`:
- Around line 237-248: orderPlan currently omits deterministic sorting for
SubjectMappings, RegisteredResources, and ObligationTriggers leading to
non-deterministic JSON; update orderPlan (in function orderPlan) to invoke
ordering helpers for these sections (e.g.,
orderSubjectMappings(plan.SubjectMappings, namespacePositions),
orderRegisteredResources(plan.RegisteredResources, namespacePositions),
orderObligationTriggers(plan.ObligationTriggers, namespacePositions)) and
implement those helpers (or extend existing ones) to sort their top-level slices
and their nested target/binding slices using the same comparisons used by
orderActionPlans and orderSubjectConditionSetPlans (use namespacePositions for
any namespace-based ordering) so all nested collections are deterministically
ordered.

In `@otdfctl/migrations/namespacedpolicy/reduce_test.go`:
- Line 132: The test TODO should be replaced with a unit test that exercises the
ScopeObligationTriggers branch of reduceActions: create a fixture that includes
a policy/action with obligation triggers, call reduceActions(ctx,
ScopeObligationTriggers, ...) (or the test helper that invokes reduceActions)
and assert the expected reduced output and side effects (e.g., obligations
present/modified) so the ScopeObligationTriggers path in
otdfctl/migrations/namespacedpolicy/reduce.go is covered; reuse existing fixture
patterns in reduce_test.go to construct inputs and assertions to match other
tests and run go test ./... to verify.

In `@otdfctl/migrations/namespacedpolicy/reduce.go`:
- Around line 7-16: reduceDependencies currently mutates the input Retrieved by
updating retrieved.Candidates in-place which can surprise callers; either
document that behavior on the reduceDependencies function or make a defensive
copy before modifying. To fix by copying, create a shallow copy of the Retrieved
(e.g., newRet := *retrieved) and ensure you deep-copy the Candidates value (or
construct a new Candidates value) then call reduceActions(scopes,
newRet.Candidates) and reduceSubjectConditionSets(scopes, newRet.Candidates),
assign results to newRet.Candidates and return &newRet; alternatively add a
clear doc comment on reduceDependencies stating it mutates its input so callers
know the side-effect.

In `@otdfctl/migrations/namespacedpolicy/retrieve.go`:
- Around line 184-188: The paged collectors append every row from offset
pagination which can produce duplicates; in the loop that inspects mapping
(where you check isLegacyNamespace(mapping.GetNamespace()) and append to
candidates), add the same guard used elsewhere: skip entries with empty GetId()
or where hasObject(candidates, mapping.GetId()) is true before appending. Apply
the identical GetId()=="" || hasObject(...) check to the registered-resource and
obligation-trigger pagination loops referenced (same pattern used in
retrieveActions/retrieveSubjectConditionSets) at the other occurrences noted.

In `@otdfctl/migrations/namespacedpolicy/scopes.go`:
- Around line 128-134: The predicates requiresRegisteredResources and
requiresObligationTriggers currently return true when ScopeActions is present,
causing registered resources and obligation triggers to be loaded whenever
actions are requested; update these functions so each only checks for its own
scope (requiresRegisteredResources should return s.has(ScopeRegisteredResources)
and requiresObligationTriggers should return s.has(ScopeObligationTriggers)) so
the dependency direction matches expandScopes() and resources are only loaded
when explicitly requested.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ab7dcf60-40d2-4c48-8adf-43878c14f033

📥 Commits

Reviewing files that changed from the base of the PR and between 572446e and fa5c65d.

📒 Files selected for processing (21)
  • otdfctl/cmd/migrate/namespacedPolicy.go
  • otdfctl/docs/man/migrate/namespaced-policy.md
  • otdfctl/migrations/namespacedpolicy/canonical.go
  • otdfctl/migrations/namespacedpolicy/canonical_test.go
  • otdfctl/migrations/namespacedpolicy/derived.go
  • otdfctl/migrations/namespacedpolicy/derived_test.go
  • otdfctl/migrations/namespacedpolicy/finalize_plan.go
  • otdfctl/migrations/namespacedpolicy/finalize_plan_test.go
  • otdfctl/migrations/namespacedpolicy/plan.go
  • otdfctl/migrations/namespacedpolicy/plan_test.go
  • otdfctl/migrations/namespacedpolicy/planner.go
  • otdfctl/migrations/namespacedpolicy/planner_test.go
  • otdfctl/migrations/namespacedpolicy/reduce.go
  • otdfctl/migrations/namespacedpolicy/reduce_test.go
  • otdfctl/migrations/namespacedpolicy/resolved.go
  • otdfctl/migrations/namespacedpolicy/resolved_test.go
  • otdfctl/migrations/namespacedpolicy/retrieve.go
  • otdfctl/migrations/namespacedpolicy/retrieve_test.go
  • otdfctl/migrations/namespacedpolicy/scopes.go
  • otdfctl/migrations/namespacedpolicy/scopes_test.go
  • otdfctl/migrations/namespacedpolicy/test_helpers_test.go

Comment thread otdfctl/cmd/migrate/namespacedPolicy.go
Comment thread otdfctl/cmd/migrate/namespacedPolicy.go
Comment thread otdfctl/docs/man/migrate/namespaced-policy.md
Comment thread otdfctl/migrations/namespacedpolicy/canonical.go
Comment thread otdfctl/migrations/namespacedpolicy/finalize_plan.go
Comment thread otdfctl/migrations/namespacedpolicy/plan.go Outdated
Comment thread otdfctl/migrations/namespacedpolicy/reduce_test.go Outdated
Comment thread otdfctl/migrations/namespacedpolicy/reduce.go Outdated
Comment thread otdfctl/migrations/namespacedpolicy/retrieve.go
Comment thread otdfctl/migrations/namespacedpolicy/scopes.go
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

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

See the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

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 422.574682ms
Throughput 236.64 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 39.791927196s
Average Latency 395.590356ms
Throughput 125.65 requests/second

Comment thread otdfctl/migrations/namespacedpolicy/resolved.go
Comment thread otdfctl/migrations/namespacedpolicy/retrieve.go
@c-r33d c-r33d merged commit 96a1462 into DSPX-2655-migrate-otdfctl Apr 13, 2026
35 checks passed
@c-r33d c-r33d deleted the step-3-migrate-policy branch April 13, 2026 18:03
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/xl

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants