The compound component pattern for forms is such a clean approach. I've been managing complex multi-step forms in a side project and the biggest pain point was always keeping validation state in sync across steps. Your custom hook pattern with useFormValues solves exactly that.
One thing I'd add: when doing CRUD forms that talk to APIs, pairing this with optimistic updates can make the UX feel instant. We ended up wrapping the form hook with a mutation cache layer so the UI never waits for the server roundtrip on non-critical fields.
Great writeup, bookmarking the video series too!