Ultimate

X_CONTRACT_EXERCISE_UNDECLARED

Means

.contract() on a non-public action names no exercise

Typical cause

a contract suite for an action or query whose policy refuses an anonymous caller states neither the actor to exercise its handler as nor a reason to skip it, or states a blank reason

Fix

defineExercise({ <name>: { actor } }) in apps/web/exercise.ts, then <name>.contract({ exercise }) with that file's export — or { off: '<why this handler cannot run in a test>' } there

Listed under Actions

This page as markdown