`resolve` removes packages under [extra] from Manifest

It seems that resolve removes packages under [extra] (in Project.toml) from the Manifest.toml.

Is this intended behavior? It implies that instante'ing a package is not enough to make it testable, and that packages that are only required for testing might get completely removed from the system after a call to gc (if no other project references it).

Packages in extra are not put in the Manifest at all (except when they are used) and they will indeed be garbage collected.

I am kinda coming around thinking that the whole extra + target thing was perhaps a mistake, or at least not thought through enough for it to make sense for it to been implemented, and something like PSA: Use a project for building your docs (but for testing) should be used instead.
Using that means the testing environment is fully reproducible, which is not the case right now.