Update: no more FX parts! Over the last few weeks, I've gone through another couple of iterations and I'm now almost at the point where I feel comfortable doing a small production run if enough people are interested. Going to mill the recesses in the cover just a few hundredths of a millimeter wider so that they don't require any hand finishing anymore (almost there but I had to file some edges just a tiny bit here and there), and I might tweak the pellet backstop around the feeding hole just a little bit: everything from ZAN 36 grain slugs to H&N FTT's cycles perfectly, but JSB jumbo heavy exacts don't cycle as reliably as I want them. Might just be a bad tin of pellets though: it sprung open during shipping and the tin had a big ol' ding in the side. Called the shop about it and a new tin is on its way.
The cover now firmly snaps in place using a beefy magnet: 1.3kg (2.9 lbf) of holding. Loaded full of ZAN 36 grain slugs, I had to absolutely
yank it back holding it upside-down before the cover would come off. The cassette (also known as the rotating pellet-holdy thing) is rotated using a beefed up version of the spring you find in the stock magazines, only without the hassle of losing the little ball bearings and springs whenever you need to assemble/disassemble the magazine if you want to change your spring pre-load.
For you amusement: below is the last iteration before this one: I thought a torque spring would allow for more even torque over a rotation. Turns out this type of spring is not at all suited for my intended purpose: you could wind it up about 100 degrees before the force became absolutely ridiculous and the spring alone doubled the (already not especially low) cost of the bill of materials. At least it looked pretty! Also, the tiny magnets were not enough to hold the cover in place reliably. And installing them turned into a nightmare of frustration and superglue in a hurry.
So, there you go. A 34 shot CNC machined aluminum FX Impact magazine, magnetic cover, shoots up to 40 grain slugs. Only took about 15 tries and the better part of a semester's worth of skipped lectures, but the thing is now (almost) ready.