Recording companion / Crust · separate surface and core
The skin sets. The core keeps changing.
A warm surface can set before the center catches up. The core generates gas; the shell resists its preferred expansion. Add a mechanical strain to see how a separate tear state can open a vent.
What the teaching model computes
Two thermal compartments exchange equal and opposite heat. Only the shell sees the heater directly, so the core warms later. Their setting and gas states use the uncustomized native CRUST_DOUGH rates at shell_seed = 1 and 0. Setting is retained; gas can decay when cold and is vented once the tear state exceeds 0.60.
Cₛ dTₛ/dt = h(Tₕ − Tₛ) − k(Tₛ − T꜀)
C꜀ dT꜀/dt = k(Tₛ − T꜀)
setting rate: [0.18 core, 1.40 shell] × clamp((T−370)/220, 0, 1)
gas rate: 2.2 × [1.80 core, 0.12 shell]
× clamp((T−345)/165, 0, 1) × (1−0.25 setting)
each state grows at rate × (1−state)The cross section is a reduced equilibrium picture: a spring-weighted radius balances the two preferred sizes. The imposed strain and that radius supply a scalar strain diagnostic to an illustrative tear update; this is not MPM deformation or a fracture solver. Gas, not literal resolved bubbles, is a material state. Heat capacities, geometry and heating schedule are teaching choices.
The native branch also uses deformation gradients, rest-volume correction, material profile overrides and auxiliary thickness/cohesion. Its “Bake v2” strain measure removes intended rest expansion before estimating tensile strain. That distinction matters: swelling alone should not manufacture a crack. This companion likewise measures elastic mismatch from the preferred shell size, rather than treating all expansion as damage.
In the recordings, compact and porous bodies visibly respond differently. A clean spontaneous shell crack is not established by those clips. Use this schematic to understand the competing state variables, not as evidence that every native fracture feature is calibrated or resolved.