chore: migrate props to zod v4#752
Conversation
Preserve public prop and platform function validation contracts under the Zod v4 APIs.
|
The prior type-check failure was reproduced in a clean install: npm circuit-json@0.0.454 still carries Zod 3, so its exported schemas cannot compose with this Zod 4 branch. I then installed the packed artifact from circuit-json PR #661 into a separate clean worktree; bunx tsc --noEmit passed there. Commit b13decc now requires circuit-json@^0.0.455 in both dependency contracts. CI can be rerun after #661 merges and its release workflow publishes that package. |
|
Status update: this one is blocked on circuit-json, not on this diff.
Because So the ordering is: merge and release tscircuit/circuit-json#661 (the Zod v4 migration) → re-run CI here → this should go green with no changes needed. Happy to rebase and re-verify as soon as that lands. Tracking issue: tscircuit/core#2810. |
|
Note on the red checks here: this is blocked upstream, not by anything in this PR. The published Unblocked by tscircuit/circuit-json#661, which is green and ready — once that merges and publishes, I'll refresh this branch and the checks should go green. Happy to close this and reopen after the circuit-json release if you'd rather not have a red PR sitting in the queue. |
|
Additional evidence that this PR matters beyond its own type-check. While testing whether
This PR already fixes it — So this isn't only a props-internal migration: it's the change that unblocks Status here is unchanged and still upstream-bound: |
|
@imrishabh18 — tagging you since you merge most PRs here, but this one is not ready to merge yet and I want to be upfront about why rather than have it sit red in your queue. It's blocked on publish order, not on its own diff:
Worth knowing this PR isn't only props-internal: it removes the last Full ordering is on |
|
Heads-up on a process issue rather than the code: this repo's stalebot will close this PR while it waits on its upstream.
days-before-pr-stale: 2
days-before-pr-close: 1
exempt-pr-labels: 'pinned,security,help-wanted'This PR is deliberately parked — it can't go green until This isn't hypothetical: Three options, whichever you prefer:
@imrishabh18 — a one-word reply is enough; I don't want to keep bumping this just to outrun a bot. |
|
Re-verified the blocker today, since the failing CI run here is stale and misleading. The recorded failure is no longer the real one. That run executed at 16:33 UTC and died on:
But the underlying blocker is unchanged. With 0.0.455 actually installed, Because the published build still ships v3-shaped types:
Order is still: tscircuit/circuit-json#661 must merge and publish before this PR can go green. #661 is I've left this PR open rather than closing it, since it's ready apart from the upstream dependency — but I'm happy to close and reopen after #661 publishes if a red check in the queue is more trouble than it's worth. Just say which you'd prefer. Same situation applies to tscircuit/footprinter#726. |
Summary
Dependency order
This is intentionally a draft until circuit-json PR #661 merges and its release workflow publishes circuit-json@0.0.455. The coordinated rollout is circuit-json, footprinter #726, @tscircuit/props, then core. The exact 0.0.455 range prevents a Zod 3 circuit-json schema from being composed with this package.
Verification