# X_CONTRACT_EXERCISE_UNREACHED

## Means

no generated run reached the handler

## Typical cause

every run of the exercise assertion stopped before the handler: denied by policy, refused input, a rate limit or a sealed network; meta.outcomes lists what each run hit

## Fix

`give a permitted actor: defineExercise({ <name>: { actor } }) in apps/web/exercise.ts, or bind a real row: { actor, input: (drawn) => ({ ...drawn, postId }) }`

[Actions](/error-codes#actions)
