Skip to content

TRT-1989: add go_partman#3534

Open
neisw wants to merge 5 commits into
openshift:mainfrom
neisw:trt-1989-partman
Open

TRT-1989: add go_partman#3534
neisw wants to merge 5 commits into
openshift:mainfrom
neisw:trt-1989-partman

Conversation

@neisw
Copy link
Copy Markdown
Contributor

@neisw neisw commented May 15, 2026

Adds go_partman for partition managment

Summary by CodeRabbit

  • New Features

    • Automatic database partition management added.
    • Daily import ensures partitions are created so new data is stored efficiently.
    • Background partition maintenance runs during server operation; if startup fails, service continues with maintenance disabled.
  • Tests

    • End-to-end tests added validating partition creation, idempotency, retention, and data routing.
  • Chores

    • Dependency updates to support partitioning.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 15, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented May 15, 2026

@neisw: This pull request references TRT-1989 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Adds go_partman for partition managment

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 15, 2026

Walkthrough

Adds a PartitionManager wrapper around go_partman, integrates it into ProwLoader (conditional Maintain and EnsurePartition), initializes/starts maintenance in load/serve commands, updates module dependencies, and adds an end-to-end partition manager test.

Changes

Partition Manager Integration

Layer / File(s) Summary
Partition manager package definition
pkg/db/partitionmanager/manager.go
New package adds TableConfig/DefaultTables, PartitionManager wrapper with NewWithDefaults/New, lifecycle methods (Maintain, Start, Stop), EnsurePartition for idempotent historical partitions, and a logrusLogger adapter.
ProwLoader partition manager integration
pkg/dataloader/prowloader/prow.go
ProwLoader adds optional partMgr field and constructor argument; loadDailyTestAnalysisByJob calls partMgr.Maintain(ctx) when present and replaces inline per-date CREATE TABLE SQL with partitionmanager.EnsurePartition(...).
Command-level partition manager initialization
cmd/sippy/load.go, cmd/sippy/serve.go
load.go constructs PartitionManager via NewWithDefaults(dbc.DB), logs on failure, and passes it to prowloader.New. serve.go constructs and starts the partition manager in a cancellable background context and defers Stop() before server start.
Dependency updates
go.mod
Adds direct dependencies github.com/jirevwe/go_partman and github.com/jmoiron/sqlx, updates indirect pgservicefile, and adds indirect github.com/oklog/ulid/v2 and gopkg.in/guregu/null.v4.
End-to-end tests
test/e2e/db/migrate/migrate_test.go
Adds TestPartitionManager exercising EnsurePartition idempotency, read/write routing, invalid-input rejection, and Maintain behavior with cleanup.

Sequence Diagram

sequenceDiagram
  participant LoadCmd as cmd/sippy/load
  participant ServeCmd as cmd/sippy/serve
  participant ProwLoader as pkg/dataloader/prowloader.ProwLoader
  participant PartMgr as pkg/db/partitionmanager.PartitionManager
  participant Postgres as Postgres (gorm.DB)
  LoadCmd->>PartMgr: NewWithDefaults(gorm.DB)
  LoadCmd->>ProwLoader: New(..., partMgr)
  ServeCmd->>PartMgr: NewWithDefaults(gorm.DB)
  ServeCmd->>PartMgr: Start(ctx)
  ProwLoader->>PartMgr: Maintain(ctx) (optional)
  ProwLoader->>PartMgr: EnsurePartition(table, date, nextDay)
  PartMgr->>Postgres: Execute DDL / Maintain actions
  Postgres-->>PartMgr: result
  PartMgr-->>ServeCmd: logs/errors (non-fatal)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • openshift/sippy#3518: Related migration/orchestration for the test_analysis_by_job_by_dates parent table used by EnsurePartition.

Suggested labels

lgtm

Suggested reviewers

  • stbenjam
  • petr-muller
🚥 Pre-merge checks | ✅ 13 | ❌ 4

❌ Failed checks (4 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Coverage For New Features ⚠️ Warning Missing test coverage: NewWithDefaults(), Start(), Stop() are used in load.go/serve.go but lack unit tests. Only EnsurePartition and Maintain have partial e2e coverage. Add unit tests for NewWithDefaults(), Start(), Stop() methods. Add integration tests for initialization flows in load.go/serve.go.
Single Responsibility And Clear Naming ⚠️ Warning ProwLoader struct has 26 fields exceeding 7-field limit. New() has 14 parameters exceeding limits. EnsurePartition is standalone despite managing partitions like other PartitionManager methods. Break ProwLoader into sub-types for caches, clients, config. Use builder or config struct for New(). Make EnsurePartition a PartitionManager method instead of standalone function.
Test Structure And Quality ⚠️ Warning PR uses standard Go tests with t.Run, not Ginkgo. "Write and read rows" test violates single responsibility by testing multiple behaviors together. Split multi-behavior test into separate tests. Add context messages to 7 require.NoError calls. Clarify check scope - repo uses testify, not Ginkgo.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding go_partman for partition management. It accurately reflects the primary objective of the pull request.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Go Error Handling ✅ Passed Error handling properly implemented. Errors wrapped with %w in fmt.Errorf. Ignored error justified via comment. Nil pointers checked. No improper panics in partition manager code.
Sql Injection Prevention ✅ Passed SQL construction in EnsurePartition uses strict validation: regex for table names and time.Parse for dates before interpolation. Test coverage includes SQL injection attempt cases.
Excessive Css In React Should Use Styles ✅ Passed The custom check targets React components with excessive inline CSS. This PR modifies only Go backend files with no changes to React/JSX components, making the check not applicable.
Stable And Deterministic Test Names ✅ Passed The PR adds tests using standard Go testing (testing.T with t.Run), not Ginkgo. The custom check is for Ginkgo tests. All test names are static and deterministic with no dynamic values.
Microshift Test Compatibility ✅ Passed No Ginkgo e2e tests added. PR adds standard Go tests using testing.T framework interacting only with PostgreSQL, not Kubernetes/OpenShift APIs. Check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR adds TestPartitionManager using standard Go testing, not Ginkgo. Custom check applies only to Ginkgo e2e tests.
Topology-Aware Scheduling Compatibility ✅ Passed PR contains only Go application code (CLI, server, data loader, partition manager) with no Kubernetes manifests, operator code, or scheduling constraints. Check not applicable.
Ote Binary Stdout Contract ✅ Passed PR adds partition manager support with proper logging via logrus. No stdout writes detected in process-level code. All logging uses logrus, which defaults to stderr.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The new test is a standard Go test, not a Ginkgo e2e test. This custom check targets Ginkgo tests specifically. The test contains no external connectivity requirements or IPv4 assumptions.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci openshift-ci Bot requested review from deepsm007 and stbenjam May 15, 2026 20:07
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 15, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: neisw

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 15, 2026
Copy link
Copy Markdown
Contributor

@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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/db/partitionmanager/manager.go`:
- Around line 44-46: The New constructor can panic by dereferencing a nil
gormDB; update New(gormDB *gorm.DB, sampleRate time.Duration, tables
[]TableConfig) to first check if gormDB == nil and return a descriptive error
before calling gormDB.DB(), then proceed to call gormDB.DB() and handle its
error as before (references: New, gormDB, sqlDB, TableConfig, PartitionManager)
so no nil pointer is dereferenced.
- Around line 99-111: EnsurePartition currently interpolates identifiers and
values into SQL; validate the table and partition identifiers and use
parameterized placeholders for dates instead. In EnsurePartition, validate that
table and partitionName (derived from dateParsed) match a safe identifier
pattern (e.g., /^[A-Za-z0-9_]+$/) before using fmt.Sprintf to insert them into
the SQL string, and then call db.Exec with parameter placeholders for the date
range values (date and nextDay) instead of embedding them directly; reference
EnsurePartition, partitionName, table, dateParsed, date and nextDay to locate
the code.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 9fa0a3b5-9768-493c-9f1b-fc8414d7d4e5

📥 Commits

Reviewing files that changed from the base of the PR and between e99b97d and b226df3.

⛔ Files ignored due to path filters (42)
  • go.sum is excluded by !**/*.sum, !go.sum
  • vendor/github.com/jackc/pgservicefile/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jackc/pgservicefile/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jackc/pgservicefile/pgservicefile.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/clock.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/logger.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/manager.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/queries.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/type.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/ui.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/web/dist/index.html is excluded by !**/dist/**, !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/Makefile is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/bind.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/named.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/named_context.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/reflectx/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/reflectx/reflect.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/sqlx.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jmoiron/sqlx/sqlx_context.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/AUTHORS.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/CHANGELOG.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/CONTRIBUTING.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/oklog/ulid/v2/ulid.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/bool.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/float.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/int.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/string.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/guregu/null.v4/time.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (5)
  • cmd/sippy/load.go
  • cmd/sippy/serve.go
  • go.mod
  • pkg/dataloader/prowloader/prow.go
  • pkg/db/partitionmanager/manager.go

Comment thread pkg/db/partitionmanager/manager.go
Comment thread pkg/db/partitionmanager/manager.go
@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label May 15, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@neisw
Copy link
Copy Markdown
Contributor Author

neisw commented May 15, 2026

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label May 15, 2026
Copy link
Copy Markdown
Contributor

@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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/e2e/db/migrate/migrate_test.go`:
- Around line 190-196: The cleanup currently ignores errors from dbc.DB.Exec and
drops partition child tables using quoted schema-qualified names (e.g., dropping
"%s" where input is "public.table") which fails; update all cleanup/reset blocks
that call dbc.DB.Exec (including the t.Cleanup anonymous func and the other
reset blocks) to check the returned .Error and handle or fail the test
accordingly, and change the child-table drop logic: instead of quoting the full
"schema.table" string, query pg_class/pg_namespace (or split the regclass into
schema and relname) to build DROP TABLE statements with separate schema and
table identifiers or call dbc.DB.Migrator().DropTable() with properly qualified
identifiers so partitions are actually removed and errors are surfaced.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: e0a0168d-d44e-42d6-972a-37ced88bcfff

📥 Commits

Reviewing files that changed from the base of the PR and between c9da5e0 and f273ca6.

⛔ Files ignored due to path filters (2)
  • vendor/github.com/jirevwe/go_partman/SIPPY_VENDOR_PATCHES.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/jirevwe/go_partman/manager.go is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (2)
  • pkg/db/partitionmanager/manager.go
  • test/e2e/db/migrate/migrate_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/db/partitionmanager/manager.go

Comment thread test/e2e/db/migrate/migrate_test.go
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

Copy link
Copy Markdown
Contributor

@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.

♻️ Duplicate comments (1)
test/e2e/db/migrate/migrate_test.go (1)

190-215: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Make cleanup failures fail the test instead of just logging.

On Line 192, Line 199, Line 204, and Line 212, cleanup errors are logged but the test still passes. This can hide state leakage and cause downstream flakes.

Suggested fix
 dropPartmanState := func(t *testing.T) {
 	t.Helper()
-	if err := dbc.DB.Exec("DROP SCHEMA IF EXISTS partman CASCADE").Error; err != nil {
-		t.Logf("cleanup: drop partman schema: %v", err)
-	}
+	assert.NoError(t, dbc.DB.Exec("DROP SCHEMA IF EXISTS partman CASCADE").Error, "cleanup: drop partman schema")

 	var childTables []string
 	if err := dbc.DB.Raw(
 		"SELECT c.relname FROM pg_inherits JOIN pg_class c ON c.oid = pg_inherits.inhrelid WHERE inhparent = ?::regclass",
 		testTable,
 	).Scan(&childTables).Error; err != nil {
-		t.Logf("cleanup: query child tables: %v", err)
+		assert.NoError(t, err, "cleanup: query child tables")
 		return
 	}
 	for _, child := range childTables {
-		if err := dbc.DB.Exec(fmt.Sprintf(`DROP TABLE IF EXISTS "%s"`, child)).Error; err != nil {
-			t.Logf("cleanup: drop child table %s: %v", child, err)
-		}
+		assert.NoError(t, dbc.DB.Exec(fmt.Sprintf(`DROP TABLE IF EXISTS "%s"`, child)).Error, "cleanup: drop child table %s", child)
 	}
 }

 t.Cleanup(func() {
 	dropPartmanState(t)
-	if err := dbc.DB.Exec(fmt.Sprintf(`DROP TABLE IF EXISTS "%s" CASCADE`, testTable)).Error; err != nil {
-		t.Logf("cleanup: drop test table: %v", err)
-	}
+	assert.NoError(t, dbc.DB.Exec(fmt.Sprintf(`DROP TABLE IF EXISTS "%s" CASCADE`, testTable)).Error, "cleanup: drop test table")
 })

As per coding guidelines, "Never ignore returned Go errors as _ without clear justification. Errors should be wrapped with context..." and for tests, "Setup and cleanup—... flag tests creating resources without cleanup, especially cluster-scoped."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/e2e/db/migrate/migrate_test.go` around lines 190 - 215, The cleanup
currently logs errors in dropPartmanState and the t.Cleanup block (calls to
dbc.DB.Exec and dbc.DB.Raw related to dropPartmanState, the child table loop and
the final DROP TABLE) which hides failures; change these t.Logf calls to fail
the test (use t.Fatalf or t.Fatalf-style test failure) and include wrapped
context for each error (e.g. "cleanup: drop partman schema", "cleanup: query
child tables", "cleanup: drop child table <name>", "cleanup: drop test table")
so any cleanup failure aborts the test; update dropPartmanState, the dbc.DB.Raw
error handling, each child drop error, and the final DROP TABLE error in the
t.Cleanup closure to call the failing test helper and include the original error
message.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@test/e2e/db/migrate/migrate_test.go`:
- Around line 190-215: The cleanup currently logs errors in dropPartmanState and
the t.Cleanup block (calls to dbc.DB.Exec and dbc.DB.Raw related to
dropPartmanState, the child table loop and the final DROP TABLE) which hides
failures; change these t.Logf calls to fail the test (use t.Fatalf or
t.Fatalf-style test failure) and include wrapped context for each error (e.g.
"cleanup: drop partman schema", "cleanup: query child tables", "cleanup: drop
child table <name>", "cleanup: drop test table") so any cleanup failure aborts
the test; update dropPartmanState, the dbc.DB.Raw error handling, each child
drop error, and the final DROP TABLE error in the t.Cleanup closure to call the
failing test helper and include the original error message.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: af89d561-82eb-40da-b11f-6385178ada9b

📥 Commits

Reviewing files that changed from the base of the PR and between f273ca6 and 299278a.

📒 Files selected for processing (1)
  • test/e2e/db/migrate/migrate_test.go

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 16, 2026

@neisw: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants