Procedural Generation
In an effort to give a sense of unique discovery and exploration, the castle layout, the internal rooms and their furnishing, the secret passage locations, and even the puzzles will aim to be procedurally generated.
Castle floor layout
There will only be one or two fixed features in the castle, the Foyer and the Stair Cases, other elements of the castle should be randomly placed throughout the castle.
There is a layout generation method described in this paper that seems to generate the kind of layouts i'd like from the internals of the castle https://www.politesi.polimi.it/bitstream/10589/152122/3/2019_12_Carideo.pdf When using this method we'd need to generate a list of rooms for a given floor an use distorted representations of the rooms for the layout generation to keep that magical TARDIS like feel to the castle.
Floor sections
I'm not sure if this is something to try and include or not, but generally rooms that serve the same subject will be kept together, for example if there are 3 potions rooms they would be in a cluster/wing of the castle. I'm not sure if this wants to be kept or not.
Room layout/furnishings
If possible generating rooms with more unusual shapes should be preferred over large rectangular rooms. There are going to be several types of room that will require different sizing rule sets as well, for example a class room will need room for a fixed number of students, a presentation area for the teacher and then decorations, where as a store cupboard might require significantly less space.
The class rooms will also need to have sub types of rooms for practical classes vs traditional learning. https://www.bookwidgets.com/blog/2019/12/19-classroom-seating-arrangements-fit-for-your-teaching has 19 different seating layouts that could be generated for the student seating for example.