Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 1 Nov 2026. What's built · Install 0.2.0
jadpo
Reference: Tooling

Tooling · rule

migration.drop_not_accepted

On this page

A migration removes data, and no acceptance in the project says a person agreed to it.

Area 14, Tooling; not declinable; the next step is usually the human's.

Why Jadpo refuses it

A drop can't be undone: the column or table goes, with every value in it, when the migration runs, and no build brings it back. Retiring an entity isn't gone yet, but it takes its records out of the reach of the app, of erasure and of retention. So each needs a person, and a person's decision is an acceptance with a reason.

On a branch, jadpo check reports a removal the change adds as acceptance.missing. This error is what stands behind that, for wherever there is no branch to compare: jadpo check with no before side, and every command about to run the migrations, whatever git says.

What it looks like

Todo.legacy_flag was retired by an earlier migration, and a later one drops it:

shell
jadpo migrate new drop_legacy_flag --drop Todo.legacy_flag > /dev/nulljadpo migrate apply
jadpo migratemigrate apply stopped: 1 error

error Migration 20261020T1402_drop_legacy_flag removes data nobody accepted: Todo.legacy_flag

--> database/migrations/20261020T1402_drop_legacy_flag/changes.jadpo:4:5

  |4 |     Todo.legacy_flag: FieldChange.dropped  |     ^^^^^^^^^^^^^^^^ DataChange.column_dropped
reason
Todo.legacy_flag is dropped for good from store main: column todo.legacy_flag (boolean) and every value in it. So a person accepts it first, and no acceptance with a reason lists Todo.legacy_flag: DataChange.column_dropped.
next
A person writes an acceptance in acceptances/ listing Todo.legacy_flag: DataChange.column_dropped, with why on a /// line above acceptance (human)
rule
migration.drop_not_accepted
help
https://jadpo.dev/docs/errors/migration.drop_not_accepted

(human) at the end of the next: line tells your coding agent to stop and ask you which fix you want, because the choice is yours to make: it decides whether every legacy_flag already stored is lost for good.

How to fix it

The question is whether the data should go.

If it should go, write down why. jadpo acceptance new <purpose> writes the draft on a branch, or write the file yourself, listing what the message names, with your reason on the /// line above acceptance:

acceptances/20261020T1500_drop_legacy_flag.jadpo
// acceptances/20261020T1500_drop_legacy_flag.jadpo/// Nothing has read the legacy flag since 3.2, and support never asks for it.acceptance {    changes: {        Todo.legacy_flag: DataChange.column_dropped    }}

Then jadpo migrate apply runs the migration. The acceptance is committed with the change, and the pull request's review is where an owner of acceptances/ approves it.

If it shouldn't go, delete the migration's folder, as long as it hasn't run anywhere:

shell
rm -r database/migrations/20261020T1402_drop_legacy_flag

The field stays retired, its column and data kept, and nothing more needs deciding.

Markdown for agents: /docs/errors/migration.drop_not_accepted.md.Built from Jadpo main at e00e61f.