Preheat oven to 350°. Put a large shallow ovenproof casserole pan on medium and heat with the butter.
Peel, chop onion. Add to pan. stir regularly. Slice and add the celery, then chop and add fennel, if using.
Break the cauliflower into florets, then cut into 1/2 inch slices and finely slice the stalk. Add to pan. Cook 10 minutes, until soft, stirring often.
Cook the pasta in a large pan of boiling salted water. reserve a cup of cooking water, drain the pasta and pour into a 9x11" baking dish along with the cauliflower.
Stir the flour into the veg pan for 30 seconds, then gradually pour in the milk, stirring all the time, followed by 2 cups water. Simmer for 5 minutes, then stir in mustard. Season with sea salt and black pepper.
Let the sauce simmer to thicken. Coarsely grate the cheese.
Stir the cheese into he sauce, then blend until smooth with a hand blender, or in batches in a food processor.
pour over the pasta and cauliflower florets, ten, if you need to loosen it, add a little reserved pasta water-the sauce will thicken up as it bakes.
Chop your stale bread into crumbs in the processor (or smash up in a clean towel). Peel and grate the garlic. Pick the herb leaves, if using, and mix it all together with 1 Tbsp olive oil.
Scatter the crumbs over the pasta, grating more cheese if desired. Bake for 30 minutes, or until golden and bubbling.