## The failure

### npm ERESOLVE on every Release Video run

    # workflow: .github/workflows/release-video.yml — job: Render Videos
    npm error code ERESOLVE
    npm error While resolving: @remotion/zod-types@4.0.447
    npm error Found:     zod@3.22.3          (root project pin)
    npm error peer:      zod@"4.3.6"         (required by @remotion/zod-types)
    npm error Could not resolve dependency.

The Remotion team shipped `@remotion/zod-types@4.0.447` with a hard peer-dep on `zod@4.3.6`. Our `orchestkit-demos/package.json` had `zod: 3.22.3` pinned — npm refused to resolve.

## The fix

### One-line package.json change

    // orchestkit-demos/package.json
     "dependencies": {
       "@remotion/zod-types": "^4.0.0",
    -  "zod": "3.22.3"
    +  "zod": "^4.3.6"
     }

## Why the upgrade is safe

### All existing zod usage is v3/v4 API-compatible

Audited every `z.*` call across the 5 components that use zod. Only basic API surface — no v3-only features.

Component | zod API used | v4 compat
--- | --- | ---
`MarketplaceIntro.tsx` | `z.object, z.string, z.infer` | ✓
`SpeedrunDemo.tsx` | `z.object, z.string, z.infer` | ✓
`TriTerminalRace-Square.tsx` | `z.object, z.string, z.number, z.array, z.union, z.record` | ✓
`ProgressiveZoom-Square.tsx` | `z.object, z.string` | ✓
`ProgressiveZoom-Vertical.tsx` | `z.object, z.string` | ✓

Not used anywhere: `z.coerce`, `z.string().email()` (v4 renames it), custom `.refine()` with error maps (signature changed). Clean upgrade path.

## Verification

    $ cd orchestkit-demos
    $ npm install --no-audit --no-fund
    added 4 packages, removed 6 packages, and changed 2 packages in 3s

    $ npx tsc --noEmit
    (exit 0 — no type errors)

## Post-merge expectation

The next release tag (likely v7.60.0 after the next release-please merge) should render the landscape + square videos successfully, then upload them as release assets via the App token — exercising the full pipeline end-to-end for the first time since the tokens migrated in PR #1426.

If this still fails after merge, the bug is upstream of zod — most likely a Remotion composition ID mismatch or a ffmpeg codec issue. That would be a separate fix.