Skip to content

Fix Schema Union candidate pruning - #6704

Merged
gcanti merged 1 commit into
mainfrom
fix/schema-union-candidate-selection
Jul 28, 2026
Merged

Fix Schema Union candidate pruning#6704
gcanti merged 1 commit into
mainfrom
fix/schema-union-candidate-selection

Conversation

@gcanti

@gcanti gcanti commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Bug Fixes

    • Improved union schema candidate selection for recovering middleware and suspended members.
    • Fixed runtime dispatch for unions using decoding or encoding recovery.
    • Preserved lazy evaluation for suspended union members, avoiding unnecessary evaluation after a successful match.
  • Tests

    • Added coverage for recovering members, sentinel dispatch, lazy suspensions, and recursive suspended schemas.

@gcanti gcanti added bug Something isn't working 4.0 labels Jul 28, 2026
@github-project-automation github-project-automation Bot moved this to Discussion Ongoing in PR Backlog Jul 28, 2026
@changeset-bot

changeset-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 4644bc0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 29 packages
Name Type
effect Patch
@effect/opentelemetry Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node-shared Patch
@effect/platform-node Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d490cf9b-7713-4db5-aa92-02b9ccb5bd38

📥 Commits

Reviewing files that changed from the base of the PR and between d48506d and 4644bc0.

📒 Files selected for processing (3)
  • .changeset/fix-schema-union-pruning.md
  • packages/effect/src/SchemaAST.ts
  • packages/effect/test/schema/Schema.test.ts

📝 Walkthrough

Walkthrough

Changes

Schema union candidate selection

Layer / File(s) Summary
Candidate derivation and dispatch integration
packages/effect/src/SchemaAST.ts
Adds memoized candidate resolution for encoding, middleware, and suspended AST nodes, then uses it for union indexing and literal filtering.
Recovering and suspended member regression coverage
packages/effect/test/schema/Schema.test.ts, .changeset/fix-schema-union-pruning.md
Tests recovering branches, sentinel dispatch, suspension laziness, and recursive suspended unions; adds a patch changeset.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: patroza, tim-smart

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
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.

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

@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

File Name Current Size Previous Size Difference
basic.ts 6.63 KB 6.63 KB 0.00 KB (0.00%)
batching.ts 9.42 KB 9.42 KB 0.00 KB (0.00%)
brand.ts 6.29 KB 6.29 KB 0.00 KB (0.00%)
cache.ts 10.12 KB 10.12 KB 0.00 KB (0.00%)
config.ts 19.89 KB 19.77 KB +0.12 KB (+0.59%)
differ.ts 19.06 KB 18.96 KB +0.10 KB (+0.52%)
http-client.ts 20.94 KB 20.94 KB 0.00 KB (0.00%)
logger.ts 10.28 KB 10.28 KB 0.00 KB (0.00%)
metric.ts 8.55 KB 8.55 KB 0.00 KB (0.00%)
optic.ts 7.45 KB 7.45 KB 0.00 KB (0.00%)
pubsub.ts 14.26 KB 14.26 KB 0.00 KB (0.00%)
queue.ts 11.09 KB 11.09 KB 0.00 KB (0.00%)
schedule.ts 10.27 KB 10.27 KB 0.00 KB (0.00%)
schema-class.ts 18.84 KB 18.72 KB +0.12 KB (+0.64%)
schema-fromJsonSchemaDocument.ts 28.75 KB 28.69 KB +0.06 KB (+0.21%)
schema-representation-roundtrip.ts 25.05 KB 24.98 KB +0.07 KB (+0.30%)
schema-string-transformation.ts 12.96 KB 12.96 KB 0.00 KB (0.00%)
schema-string.ts 10.65 KB 10.65 KB 0.00 KB (0.00%)
schema-template-literal.ts 14.85 KB 14.85 KB 0.00 KB (0.00%)
schema-toArbitraryLazy.ts 21.62 KB 21.52 KB +0.10 KB (+0.45%)
schema-toCodeDocument.ts 24.07 KB 24.00 KB +0.07 KB (+0.28%)
schema-toCodecJson.ts 18.97 KB 18.87 KB +0.10 KB (+0.52%)
schema-toEquivalence.ts 18.69 KB 18.59 KB +0.11 KB (+0.57%)
schema-toFormatter.ts 18.56 KB 18.45 KB +0.10 KB (+0.57%)
schema-toJsonSchemaDocument.ts 22.19 KB 22.08 KB +0.11 KB (+0.48%)
schema-toRepresentation.ts 19.23 KB 19.13 KB +0.10 KB (+0.53%)
schema.ts 18.10 KB 18.00 KB +0.10 KB (+0.58%)
stm.ts 12.05 KB 12.05 KB 0.00 KB (0.00%)
stream.ts 9.37 KB 9.37 KB 0.00 KB (0.00%)

@gcanti
gcanti merged commit 5d52d9d into main Jul 28, 2026
15 checks passed
@gcanti
gcanti deleted the fix/schema-union-candidate-selection branch July 28, 2026 16:59
@github-project-automation github-project-automation Bot moved this from Discussion Ongoing to Done in PR Backlog Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.0 bug Something isn't working

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant