STET

agent_patch

runs/2026-02-27__21-30-28__gpt-5-4/flux-pr-4970/flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/agent-logs/agent.patch

5948 bytes

Back to adjudication
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/docs/content/api.mdx b/app/packages/docs/content/api.mdx
index 1bcb69d..6a32ee0 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/docs/content/api.mdx
+++ b/app/packages/docs/content/api.mdx
@@ -207,6 +207,7 @@ To perform some simple string transforms:
 z.string().trim(); // trim whitespace
 z.string().toLowerCase(); // toLowerCase
 z.string().toUpperCase(); // toUpperCase
+z.string().normalize(); // Unicode normalization (NFC by default)
 ```
 </Tab>
 <Tab value="Zod Mini">
@@ -214,6 +215,7 @@ z.string().toUpperCase(); // toUpperCase
 z.string().check(z.trim()); // trim whitespace
 z.string().check(z.toLowerCase()); // toLowerCase
 z.string().check(z.toUpperCase()); // toUpperCase
+z.string().check(z.normalize()); // Unicode normalization (NFC by default)
 ```
 </Tab>
 </Tabs>
@@ -2742,4 +2744,3 @@ const MyFunction = z.function({
 
 const computeTrimmedLength = MyFunction.implement((input) => input.trim.length);
 ```
-
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/jsr.json b/app/packages/zod/jsr.json
index 4005c45..20e6e2a 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/jsr.json
+++ b/app/packages/zod/jsr.json
@@ -1,6 +1,6 @@
 {
   "name": "@zod/zod",
-  "version": "4.0.8",
+  "version": "4.0.9",
   "exports": {
     "./package.json": "./package.json",
     ".": "./src/index.ts",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/package.json b/app/packages/zod/package.json
index d079aab..751c4e0 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/package.json
+++ b/app/packages/zod/package.json
@@ -1,6 +1,6 @@
 {
   "name": "zod",
-  "version": "4.0.8",
+  "version": "4.0.9",
   "type": "module",
   "author": "Colin McDonnell <zod@colinhacks.com>",
   "description": "TypeScript-first schema declaration and validation library with static type inference",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/literal.test.ts b/app/packages/zod/src/v4/classic/tests/literal.test.ts
index 8c48b20..f65b323 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/literal.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/literal.test.ts
@@ -91,6 +91,10 @@ test("readonly", () => {
   z.literal(a);
 });
 
+test("empty literal arrays are rejected", () => {
+  expect(() => z.literal([])).toThrow("Literal schema must define at least one value.");
+});
+
 test("literal pattern", () => {
   expect(z.literal(1.1)._zod.pattern).toMatchInlineSnapshot(`/\\^\\(1\\\\\\.1\\)\\$/`);
 
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/union.test.ts b/app/packages/zod/src/v4/classic/tests/union.test.ts
index f787693..59c2490 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/union.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/union.test.ts
@@ -8,6 +8,44 @@ test("function parsing", () => {
   expect(result.success).toEqual(false);
 });
 
+test("multiple non-aborted union branches report invalid_union", () => {
+  const result = z
+    .union([
+      z.string().refine(() => false, { error: "first" }),
+      z.string().refine(() => false, { error: "second" }),
+    ])
+    .safeParse("asdf");
+
+  expect(result.success).toEqual(false);
+  if (!result.success) {
+    expect(result.error.issues).toMatchInlineSnapshot(`
+      [
+        {
+          "code": "invalid_union",
+          "errors": [
+            [
+              {
+                "code": "custom",
+                "message": "first",
+                "path": [],
+              },
+            ],
+            [
+              {
+                "code": "custom",
+                "message": "second",
+                "path": [],
+              },
+            ],
+          ],
+          "message": "Invalid input",
+          "path": [],
+        },
+      ]
+    `);
+  }
+});
+
 test("union 2", () => {
   const result = z.union([z.number(), z.string().refine(() => false)]).safeParse("a");
   expect(result.success).toEqual(false);
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/schemas.ts b/app/packages/zod/src/v4/core/schemas.ts
index 0622c5d..b998898 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/schemas.ts
+++ b/app/packages/zod/src/v4/core/schemas.ts
@@ -1911,7 +1911,7 @@ function handleUnionResults(results: ParsePayload[], final: ParsePayload, inst:
   }
 
   const nonaborted = results.filter((r) => !util.aborted(r));
-  if (nonaborted.length > 0) {
+  if (nonaborted.length === 1) {
     final.value = nonaborted[0].value;
     return nonaborted[0];
   }
@@ -2781,6 +2781,9 @@ export const $ZodLiteral: core.$constructor<$ZodLiteral> = /*@__PURE__*/ core.$c
   "$ZodLiteral",
   (inst, def) => {
     $ZodType.init(inst, def);
+    if (def.values.length === 0) {
+      throw new Error("Literal schema must define at least one value.");
+    }
 
     inst._zod.values = new Set<util.Literal>(def.values);
     inst._zod.pattern = new RegExp(
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/versions.ts b/app/packages/zod/src/v4/core/versions.ts
index ce46253..c2f6e4d 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/versions.ts
+++ b/app/packages/zod/src/v4/core/versions.ts
@@ -1,5 +1,5 @@
 export const version = {
   major: 4,
   minor: 0,
-  patch: 8 as number,
+  patch: 9 as number,
 } as const;