Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
When the user asks for Concave parity, treat Convex behavior as the source of
truth for kitcn runtime contracts.
Do not hand-wave with "compatible enough."
Do not normalize a parity shift into "just how Concave works" if kitcn
already has a shim for it. Name the shift, point at the shim, and state the
delete condition.
If upstream Concave reaches parity, delete the bandaid. Do not keep fallback
sludge around for nostalgia.
Hard Rules
Every Concave-specific workaround must be listed here with file locations.
Every new Concave workaround needs a removal trigger.
If you touch a listed bandaid, re-check whether upstream parity makes it
deletable right now.
If the shift only affects repo tooling or scenarios, say that explicitly.
If the shift is only observed and not patched, keep it in the watchlist, not
the bandaid section.
Active Bandaids
1. Local dev site-side 3211 proxy
Convex local dev shape in this repo:
backend on 127.0.0.1:3210
site URL on 127.0.0.1:3211
frontend app on localhost:3005 in prepared scenarios
Concave alpha.14 fixed the backend default to 3210, but it still does not
expose the site side on 3211.
kitcn workaround:
start a local site proxy on 3211
inject CONVEX_SITE_URL=http://127.0.0.1:3211
inject SITE_URL from .env.local
Code locations:
packages/kitcn/src/cli/commands/dev.ts
resolveConcaveLocalDevContract(...)
resolveConcaveLocalSiteUrl(...)
startLocalSiteProxy(...)
packages/kitcn/src/cli/commands/dev.test.ts
tooling/scenarios.ts
DEFAULT_SCENARIO_READY_URL
readScenarioSiteUrl(...)
tooling/scaffold-utils.ts
local env patching for 3005
Why it exists:
prepared apps and auth wiring already assume the Convex-style split
upstream still only exposes the backend side
Delete when:
Concave local dev natively supports the same backend/site split contract, or
kitcn no longer needs to emulate Convex local URLs for prepared apps
2. Startup retry loop for dev migration/backfill hooks
Convex dev startup usually accepts kitcn migration/backfill hooks
cleanly on first call.
Concave alpha.14 fixed concave run for internal runtime functions, but
startup can still race readiness.
kitcn workaround:
Concave-only retry loop
backoff: 1s, 2s, 4s
show retry count only while retrying
Code locations:
packages/kitcn/src/cli/commands/dev.ts
runDevStartupRetryLoop(...)
startup migration up and aggregateBackfill kickoff callers
When touching any active Concave parity bandaid, run the smallest real gate
that proves the seam:
bun test packages/kitcn/src/cli/commands/dev.test.ts \
packages/kitcn/src/cli/commands/migrate.test.ts \
packages/kitcn/src/auth/generated-contract.test.ts \
tooling/scenarios.test.ts
bun run test:concave
bun run scenario:test -- next-auth
bun run scenario:test -- vite