Roast the cauliflower, then weigh it: heat the oven to 425°F. Toss the florets with the olive oil and spread them on a large sheet in a single layer with space between them - bare dry florets on hot metal stick and scorch. Roast 25 minutes, turning once, until the edges are properly browned. Weigh them - you want around 650 g from a starting 900 g. If you are well above that, give them another five minutes. This is the number that predicts whether the casserole goes watery.
Disperse the xanthan first: toss the 1/2 tsp xanthan gum through the grated Parmesan with your fingers before either meets a liquid. Sprinkled straight into a hot sauce it hydrates on contact and forms slippery lumps that will not whisk out.
Build the sauce: melt 2 tbsp butter in a saucepan over medium and cook the onion and celery 5 minutes until soft. Turn the heat to low, add the cream cheese in pieces and stir until melted, then pour in the cream. Add the Parmesan-and-xanthan mixture a handful at a time, then 1 cup of the cheddar, the mustard, garlic powder, salt and pepper. Keep it on low - a boiling cheese sauce is a broken cheese sauce.
Combine and top: drop the oven to 375°F and butter a 9x13 dish. Flake the drained tuna into the sauce, fold in the roasted cauliflower, and taste for salt now. Spread it out. Mix the remaining 1/4 cup cheddar, the 1/4 cup Parmesan, the almond flour and the last tablespoon of melted butter into a loose crumb and scatter it over. The butter matters - almond flour alone draws moisture up out of the casserole and softens.
Bake uncovered: 30 minutes at 375°F, until golden on top and bubbling at the edges. Foil keeps moisture in and moisture is this dish's problem. Check the centre reads 165°F (74°C), the USDA figure for a combination dish containing fish.
Rest 10 minutes before serving. The sauce firms noticeably as it drops below scalding, and serving it straight from the oven is what makes a good casserole look loose on the plate.