If it is evaluated already where would the evaluated value be stored?
The layout context for the child LM could be an appropriate place.
The resolved property values of the parents should be stored in the layout context? I must be missing something here!
And then the value should be reverted to the expression when the base value changes due to breaks.
No problem, this is known at the place where a new Layout context is created for getting BP from the child LM.
I don't understand how you propose to solve any of this, but I hope it would be Ok to commit the straight forward solution I propose. Then you can change it at a later time to pass in the LayoutContext as a parameter to Length.getValue().