# SCHEDULED_WORK_IN_APP

**What it means.** This app runs work on a timer inside itself, and a copy of the app is paused between visits, so that work runs late, all at once, or not at all.

**What to do.** Move each piece of timed work to a job in deploy.json (jobs: a name, a schedule and a path the platform calls on time), and turn the timer off: Spring Session JDBC with spring.session.jdbc.cleanup-cron=-, Spring's @Scheduled by removing @EnableScheduling, Quartz with spring.quartz.auto-startup=false, APScheduler, node-cron and the like by not starting the scheduler. This is a warning; deploy continues.

- HTTP status: 422
- Retryable after applying the fix: yes

Every failure from the CLI or an MCP tool has this shape:

```json
{
  "ok": false,
  "code": "SCHEDULED_WORK_IN_APP",
  "message": "This app runs work on a timer inside itself, and a copy of the app is paused between visits, so that work runs late, all at once, or not at all.",
  "fix": "Move each piece of timed work to a job in deploy.json (jobs: a name, a schedule and a path the platform calls on time), and turn the timer off: Spring Session JDBC with spring.session.jdbc.cleanup-cron=-, Spring's @Scheduled by removing @EnableScheduling, Quartz with spring.quartz.auto-startup=false, APScheduler, node-cron and the like by not starting the scheduler. This is a warning; deploy continues.",
  "file": "<where to edit, when known>",
  "retryable": true,
  "docs": "https://docs.uarpie.app/errors/SCHEDULED_WORK_IN_APP"
}
```

Apply `fix` (edit `file` when it is given), then run the same command again.
