@Zac67
It is possible to track memory resources on the Amiga. You could patch the memory management functions in exec.library. Normally AmigaDOS doesn't keep track of any memory reserved, it only keeps track of what's left. But you could insert a patch that before reserving the memory, gets the current process handle, and stores that somewhere in a table along with the address and amount of memory reserved.
I was considering writing such a patch, not to expand chip RAM, but just so that you can free up any memory reserved by programs that they forgot to free up when they exited.
However, if you can do this, then when the chip memory gets full, we can look at this table and see what programs we can "swap out". You'd have to put the entire process to sleep (including taking its screen out of the screen list), as it would have no way to access any chip memory it reserved while it was swapped out. So you wouldn't have full multitasking anymore, but you could get back to the old program when the new one frees up its chip memory.
Realtime switching with full multitasking obviously isn't an option as a program's chip memory can still be accessed by the hardware even when it isn't the current process, and furthermore, it takes far too long to copy memory around like that (it would have to be physically copied into and out if chip/fast ram on every process switch).
But maybe there is a compromise option, that allows you to effectively use more than 2Mb of chip ram, but only a maximum of 2Mb at any one time. We could do it manually with some sort of "task manager" like Windows has. You see a window with a list of all the current programs and how much chip ram they are using, and can put individual processes to sleep in fast ram when you want to, and bring them back later.