Currently, context run this way:
Only changeset s marked with the passed contexts will be run.
If you don’t assign a context to a changeset, it will run all the time, regardless of what contexts you pass in to the migrator.
If you do not specify a context when you run the migrator, ALL contexts will be run.
That’s how folks currently use Liquibase, but it is community driven software, you could put an issue in or create a PR to have it work differently but, I believe the direction was set this way b/c the most common case is to run everything and not set up context on EVERY changeset, but rather default to running the changeset.
To file and issue, and to see if others feel the same way you could do that here:
Or usually more weight is given to folks who feel strongly enough and have the ability to update LB directly, could write a PR:
Another option is, if you want changesets to NOT run, that you have already added a context to (ex. test), you can specifically say:
Hope that helps,