Skip to content

feat: deployment dependencies evaluator#1081

Merged
adityachoudhari26 merged 3 commits intomainfrom
deployment-deps-evaluation
Apr 28, 2026
Merged

feat: deployment dependencies evaluator#1081
adityachoudhari26 merged 3 commits intomainfrom
deployment-deps-evaluation

Conversation

@adityachoudhari26
Copy link
Copy Markdown
Member

@adityachoudhari26 adityachoudhari26 commented Apr 28, 2026

fixes #1077

Summary by CodeRabbit

  • New Features
    • Added support for deployment version dependencies, allowing deployments to declare version constraints on other deployments using CEL expressions for validation during release management.

Copilot AI review requested due to automatic review settings April 28, 2026 19:48
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 28, 2026

Warning

Rate limit exceeded

@adityachoudhari26 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 35 minutes and 1 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 14689466-4ca2-4b99-9e1d-259ab02f641a

📥 Commits

Reviewing files that changed from the base of the PR and between 6b73bf2 and 423bba8.

📒 Files selected for processing (8)
  • apps/workspace-engine/pkg/db/deployments.sql.go
  • apps/workspace-engine/pkg/db/queries/deployments.sql
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency_test.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter_postgres.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval_test.go
  • apps/workspace-engine/svc/controllers/desiredrelease/reconcile_test.go
📝 Walkthrough

Walkthrough

A new deployment dependency evaluation feature is introduced in the workspace-engine. The changes add database schema for modeling deployment-to-deployment dependencies, define API types and database queries to fetch dependency relationships, implement a new evaluator that verifies CEL-based version selectors against dependency deployments' currently deployed versions, and integrate this evaluator into the release pipeline alongside policy rule evaluators. Supporting test mocks and helpers are updated across the codebase.

Changes

Cohort / File(s) Summary
Database Schema & Migration
packages/db/drizzle/0190_handy_luckman.sql, packages/db/drizzle/meta/_journal.json, packages/db/src/schema/deployment.ts
New deployment_dependency table with composite primary key (deployment_id, dependency_deployment_id), cascading foreign keys, and version_selector CEL expression field. Migration metadata updated.
API Schema Definitions
apps/workspace-engine/oapi/openapi.json, apps/workspace-engine/oapi/spec/schemas/deployments.jsonnet, apps/workspace-engine/pkg/oapi/oapi.gen.go
New DeploymentDependency OpenAPI schema with versionSelector string field and generated Go type.
Database Queries
apps/workspace-engine/pkg/db/queries/deployments.sql, apps/workspace-engine/pkg/db/queries/computed_resources.sql
Two new SQL queries: GetDeploymentDependenciesByDeploymentID retrieves dependency edges; GetReleaseTargetForDeploymentResource fetches release target for a deployment-resource pair.
Database Generated Code
apps/workspace-engine/pkg/db/deployments.sql.go, apps/workspace-engine/pkg/db/computed_resources.sql.go
Generated sqlc methods and row/param types for the two new queries.
Evaluator Implementation
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency.go, deploymentversiondependency/getter.go, deploymentversiondependency/getter_postgres.go
Core evaluator that loads dependency edges, compiles/evaluates CEL version selectors against dependent deployments' current release versions, and permits release only when all dependency constraints are satisfied. Includes Getters interface and PostgreSQL implementation.
Evaluator Tests
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency_test.go
Comprehensive unit tests verifying evaluator behavior on matching/mismatched versions, missing prerequisites, CEL compilation failures, and infrastructure getter errors.
Controller Integration
apps/workspace-engine/svc/controllers/desiredrelease/policyeval/getter.go, policyeval/getter_postgres.go, policyeval/policyeval.go, policyeval/policyeval_test.go
Integrates new evaluator into policy evaluation pipeline; updates Getter interfaces and PostgresGetter to include dependency getter methods; registers evaluator in CollectEvaluators; updates test expectations and mock to support new evaluator.
Test Helpers & Mocks
apps/workspace-engine/svc/controllers/desiredrelease/reconcile_test.go, apps/workspace-engine/test/controllers/harness/mocks.go
Updates mock DesiredReleaseGetter and test mocks to implement three new getter methods: GetDependencies, GetReleaseTargetForDeploymentResource, GetCurrentVersionForReleaseTarget.

Sequence Diagram

sequenceDiagram
    participant Evaluator as Deployment Version<br/>Dependency Evaluator
    participant Getter as PostgresGetters
    participant DB as Database
    participant CEL as CEL Evaluator

    Evaluator->>Getter: GetDependencies(ctx, deploymentID)
    Getter->>DB: Query dependency edges
    DB-->>Getter: DependencyEdge[]
    Getter-->>Evaluator: DependencyEdge[]

    loop For each dependency edge
        Evaluator->>CEL: Compile(versionSelector)
        CEL-->>Evaluator: Program

        Evaluator->>Getter: GetReleaseTargetForDeploymentResource(ctx, depID, resourceID)
        Getter->>DB: Query release target
        DB-->>Getter: ReleaseTarget
        Getter-->>Evaluator: ReleaseTarget

        Evaluator->>Getter: GetCurrentVersionForReleaseTarget(ctx, rt)
        Getter->>DB: Query current version
        DB-->>Getter: DeploymentVersion
        Getter-->>Evaluator: DeploymentVersion

        Evaluator->>CEL: Evaluate(version)
        CEL-->>Evaluator: bool (match result)

        alt Version matches selector
            Evaluator->>Evaluator: Allow (continue next dependency)
        else Version mismatch or error
            Evaluator->>Evaluator: Deny (return failure)
        end
    end

    Evaluator-->>Evaluator: Return RuleEvaluation
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • jsbroks
  • mleonidas

Poem

🐰 A rabbit hops through dependency trees,
CEL expressions dance on the breeze.
Version selectors now gate the flow,
Each deployment checks what its deps bestow.
Gates aligned, the release runs free! 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 35.48% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: deployment dependencies evaluator' clearly and specifically summarizes the main change—adding a deployment dependencies evaluator component.
Linked Issues check ✅ Passed The PR implements the core requirements from issue #1077: deployment dependency evaluation logic that gates release targets, looks up dependency deployments' release versions, evaluates CEL expressions, and integrates as a non-policy-rule evaluator in the desired-release pipeline.
Out of Scope Changes check ✅ Passed All changes are directly scoped to implementing the deployment dependencies evaluator: database schema/queries, API types, evaluator logic, integration into the policy evaluation pipeline, and comprehensive testing—with no unrelated modifications detected.

✏️ 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 deployment-deps-evaluation

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.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Implements deployment-version dependency gating for desired releases (issue #1077) by introducing a new deployment_dependency data model and a non-policy-rule evaluator that blocks desired releases until declared dependency versions satisfy CEL selectors.

Changes:

  • Add deployment_dependency table + migration/snapshot updates.
  • Add deploymentversiondependency evaluator wired into desired-release policy evaluation as a non-rule evaluator.
  • Add SQLC queries/getters and update mocks/tests to cover dependency evaluation paths.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/db/src/schema/deployment.ts Adds Drizzle table definition for deployment_dependency.
packages/db/drizzle/meta/_journal.json Records new migration entry.
packages/db/drizzle/meta/0190_snapshot.json Updates Drizzle snapshot to include deployment_dependency.
packages/db/drizzle/0190_handy_luckman.sql Creates deployment_dependency table and FKs.
apps/workspace-engine/test/controllers/harness/mocks.go Extends harness mocks for new dependency getter methods.
apps/workspace-engine/svc/controllers/desiredrelease/reconcile_test.go Extends reconcile test getter mock to satisfy new interface.
apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval_test.go Updates evaluator collection tests to account for non-rule evaluators.
apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval.go Adds non-rule evaluator collection and wires in deployment version dependency evaluator.
apps/workspace-engine/svc/controllers/desiredrelease/policyeval/getter.go Extends policyeval Getter interface with deploymentversiondependency getters.
apps/workspace-engine/svc/controllers/desiredrelease/policyeval/getter_postgres.go Implements new getter methods via a deploymentversiondependency Postgres getter.
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter.go Introduces getter interface and DependencyEdge model for evaluator.
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter_postgres.go Adds Postgres-backed implementations for dependency edges and lookups.
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency.go Adds the core evaluator enforcing dependency version selectors.
apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency_test.go Adds unit tests covering allow/deny/error cases and CEL behavior.
apps/workspace-engine/pkg/oapi/oapi.gen.go Adds DeploymentDependency schema/type to generated OAPI models.
apps/workspace-engine/oapi/spec/schemas/deployments.jsonnet Adds OpenAPI schema for DeploymentDependency.
apps/workspace-engine/oapi/openapi.json Updates rendered OpenAPI spec with DeploymentDependency.
apps/workspace-engine/pkg/db/queries/deployments.sql Adds SQLC query to list deployment dependencies.
apps/workspace-engine/pkg/db/deployments.sql.go Adds generated SQLC code for dependency query.
apps/workspace-engine/pkg/db/queries/computed_resources.sql Adds SQLC query to get a release target for (deployment, resource) across environments.
apps/workspace-engine/pkg/db/computed_resources.sql.go Adds generated SQLC code for the new release target query.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +75 to +93
-- name: GetReleaseTargetForDeploymentResource :one
-- Returns one release target for a (deployment, resource) pair across any
-- environment. Used by the deployment-version-dependency evaluator, which
-- only needs to identify some environment in which the dependency lives.
SELECT DISTINCT
cdr.deployment_id,
cer.environment_id,
cdr.resource_id
FROM computed_deployment_resource cdr
JOIN computed_environment_resource cer
ON cer.resource_id = cdr.resource_id
JOIN system_deployment sd
ON sd.deployment_id = cdr.deployment_id
JOIN system_environment se
ON se.environment_id = cer.environment_id
AND se.system_id = sd.system_id
WHERE cdr.deployment_id = @deployment_id
AND cdr.resource_id = @resource_id
LIMIT 1;
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

GetReleaseTargetForDeploymentResource picks an arbitrary environment via LIMIT 1 over computed tables, then GetCurrentReleaseByReleaseTarget looks for the latest successful release in that specific environment. If the chosen environment has no successful releases (but another environment does), the deployment-version-dependency evaluator will incorrectly deny. Consider changing this query (or adding a dedicated query) to select the environment that has the latest successful release for (deployment_id, resource_id), e.g., by joining release/release_job/job with j.status='successful' and ordering by j.completed_at DESC.

Copilot uses AI. Check for mistakes.
Comment on lines +56 to +72
return results.NewDeniedResult(
fmt.Sprintf("Deployment dependency: failed to load dependencies: %v", err),
).WithDetail("error", err.Error())
}

if len(edges) == 0 {
return results.NewAllowedResult("Deployment dependency: no dependencies declared")
}

for _, edge := range edges {
if denied := e.evaluateEdge(ctx, scope, edge); denied != nil {
return denied
}
}

return results.NewAllowedResult("Deployment dependency: all dependencies satisfied")
}
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

All user-facing result messages in this evaluator start with "Deployment dependency:", which is easily confused with the existing policy-rule evaluator deploymentdependency (and the new rule type is deploymentVersionDependency). Consider updating the message prefix to something unambiguous like "Deployment version dependency:" so UI/logs clearly identify which evaluator produced the result.

Copilot uses AI. Check for mistakes.
Comment on lines +83 to +91
deploymentId: uuid("deployment_id")
.references(() => deployment.id, { onDelete: "cascade" })
.notNull(),
dependencyDeploymentId: uuid("dependency_deployment_id")
.references(() => deployment.id, { onDelete: "cascade" })
.notNull(),
versionSelector: text("version_selector").notNull().default("false"),
},
(t) => [primaryKey({ columns: [t.deploymentId, t.dependencyDeploymentId] })],
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

The new deployment_dependency table allows deployment_id == dependency_deployment_id, which would create a self-dependency edge. That can lead to confusing behavior (a deployment gating itself) and makes cycles easier to create. Consider adding a DB-level check constraint (and/or application validation) to prevent self-dependencies.

Copilot uses AI. Check for mistakes.
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: 3

🧹 Nitpick comments (1)
apps/workspace-engine/pkg/db/deployments.sql.go (1)

69-97: Consider a stable ordering for dependency rows.

The evaluator will see dependencies in whatever order PostgreSQL returns them, so first-failure diagnostics can vary between runs. If that matters downstream, add a deterministic ORDER BY here.

📌 Possible tweak
 const getDeploymentDependenciesByDeploymentID = `-- name: GetDeploymentDependenciesByDeploymentID :many
 SELECT dependency_deployment_id, version_selector
 FROM deployment_dependency
 WHERE deployment_id = $1
+ORDER BY dependency_deployment_id
 `
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/workspace-engine/pkg/db/deployments.sql.go` around lines 69 - 97, The
SQL query getDeploymentDependenciesByDeploymentID (used by function
GetDeploymentDependenciesByDeploymentID) returns rows in unspecified order; make
the result deterministic by adding an ORDER BY to the query (for example ORDER
BY dependency_deployment_id [, version_selector]) so dependencies are returned
in a stable, reproducible order when scanning into
GetDeploymentDependenciesByDeploymentIDRow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter_postgres.go`:
- Around line 27-30: The getter currently uses uuid.MustParse(deploymentID)
which can panic; replace it with id, err := uuid.Parse(deploymentID) and handle
the error path instead of panicking (e.g., return a wrapped error or
context-aware error) before calling
p.queries.GetDeploymentDependenciesByDeploymentID(ctx, id); update any
surrounding code in the getter function to propagate the parse error
consistently with other getters/controllers.

In
`@apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval_test.go`:
- Around line 550-563: The test currently computes baseCount via baseCount :=
len(CollectEvaluators(ctx, getter, rt, nil)) which reuses the code under test;
instead hardcode the expected baseline evaluators (or their count) that must
always be present and assert those explicitly. Update the two subtests ("returns
base set for nil policies" and "skips nil policies") to call CollectEvaluators
but assert that the returned set contains the pinned always-present evaluator(s)
by name/type (e.g., the non-rule evaluator like deploymentVersionDependency or
whatever evaluator identifier is added in CollectEvaluators) and/or equals the
explicit expected length, rather than deriving baseCount from CollectEvaluators
itself; reference CollectEvaluators and the variable baseCount in your changes
so reviewers can locate the test logic to replace.

In `@packages/db/drizzle/0190_handy_luckman.sql`:
- Around line 1-9: Add a workspace_id column and thread it through the PK and
FKs: alter the "deployment_dependency" table (in 0190_handy_luckman.sql) to add
workspace_id uuid NOT NULL, change the primary key constraint
"deployment_dependency_deployment_id_dependency_deployment_id_pk" to include
workspace_id (e.g. PRIMARY KEY (workspace_id, deployment_id,
dependency_deployment_id)), and replace the single-column FKs on deployment_id
and dependency_deployment_id with composite FKs that reference the deployment
table’s (workspace_id, id) pair (or add an explicit FK to the workspace table)
so tenant isolation is enforced; update constraint names accordingly (e.g. the
two FK constraints "deployment_dependency_deployment_id_deployment_id_fk" and
"deployment_dependency_dependency_deployment_id_deployment_id_fk") and ensure ON
DELETE/ON UPDATE behaviors remain consistent.

---

Nitpick comments:
In `@apps/workspace-engine/pkg/db/deployments.sql.go`:
- Around line 69-97: The SQL query getDeploymentDependenciesByDeploymentID (used
by function GetDeploymentDependenciesByDeploymentID) returns rows in unspecified
order; make the result deterministic by adding an ORDER BY to the query (for
example ORDER BY dependency_deployment_id [, version_selector]) so dependencies
are returned in a stable, reproducible order when scanning into
GetDeploymentDependenciesByDeploymentIDRow.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: aa90f95d-4441-4ac8-ace3-8c5e783cf9c2

📥 Commits

Reviewing files that changed from the base of the PR and between 8714c07 and 6b73bf2.

📒 Files selected for processing (21)
  • apps/workspace-engine/oapi/openapi.json
  • apps/workspace-engine/oapi/spec/schemas/deployments.jsonnet
  • apps/workspace-engine/pkg/db/computed_resources.sql.go
  • apps/workspace-engine/pkg/db/deployments.sql.go
  • apps/workspace-engine/pkg/db/queries/computed_resources.sql
  • apps/workspace-engine/pkg/db/queries/deployments.sql
  • apps/workspace-engine/pkg/oapi/oapi.gen.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/deployment_version_dependency_test.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter.go
  • apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/deploymentversiondependency/getter_postgres.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/getter.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/getter_postgres.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval.go
  • apps/workspace-engine/svc/controllers/desiredrelease/policyeval/policyeval_test.go
  • apps/workspace-engine/svc/controllers/desiredrelease/reconcile_test.go
  • apps/workspace-engine/test/controllers/harness/mocks.go
  • packages/db/drizzle/0190_handy_luckman.sql
  • packages/db/drizzle/meta/0190_snapshot.json
  • packages/db/drizzle/meta/_journal.json
  • packages/db/src/schema/deployment.ts

Comment on lines +1 to +9
CREATE TABLE "deployment_dependency" (
"deployment_id" uuid NOT NULL,
"dependency_deployment_id" uuid NOT NULL,
"version_selector" text DEFAULT 'false' NOT NULL,
CONSTRAINT "deployment_dependency_deployment_id_dependency_deployment_id_pk" PRIMARY KEY("deployment_id","dependency_deployment_id")
);
--> statement-breakpoint
ALTER TABLE "deployment_dependency" ADD CONSTRAINT "deployment_dependency_deployment_id_deployment_id_fk" FOREIGN KEY ("deployment_id") REFERENCES "public"."deployment"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "deployment_dependency" ADD CONSTRAINT "deployment_dependency_dependency_deployment_id_deployment_id_fk" FOREIGN KEY ("dependency_deployment_id") REFERENCES "public"."deployment"("id") ON DELETE cascade ON UPDATE no action; No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Add workspace isolation to the new dependency table.

This table currently has no workspace_id, so dependency edges can cross tenant boundaries and can’t be scoped by workspace. Please thread workspace scope through the migration and keep the Drizzle schema aligned.

As per coding guidelines, All database tables include workspaceId for multi-tenant isolation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/db/drizzle/0190_handy_luckman.sql` around lines 1 - 9, Add a
workspace_id column and thread it through the PK and FKs: alter the
"deployment_dependency" table (in 0190_handy_luckman.sql) to add workspace_id
uuid NOT NULL, change the primary key constraint
"deployment_dependency_deployment_id_dependency_deployment_id_pk" to include
workspace_id (e.g. PRIMARY KEY (workspace_id, deployment_id,
dependency_deployment_id)), and replace the single-column FKs on deployment_id
and dependency_deployment_id with composite FKs that reference the deployment
table’s (workspace_id, id) pair (or add an explicit FK to the workspace table)
so tenant isolation is enforced; update constraint names accordingly (e.g. the
two FK constraints "deployment_dependency_deployment_id_deployment_id_fk" and
"deployment_dependency_dependency_deployment_id_deployment_id_fk") and ensure ON
DELETE/ON UPDATE behaviors remain consistent.

@adityachoudhari26 adityachoudhari26 merged commit f461582 into main Apr 28, 2026
14 checks passed
@adityachoudhari26 adityachoudhari26 deleted the deployment-deps-evaluation branch April 28, 2026 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deployment dependencies: core evaluation engine

2 participants