query is meant to deduplicate requests in a short time frame (I think it's 5 or 10 seconds) and not meant as a traditional cache. This confusion is part of why it was renamed from cache to query
You can't read it there otherwise it won't be reactive because the component body isn't reactive. If it were, it would cause the whole component to rerender
contextValue is reading the the value of validationState in the component body (which is not reactive). You'll need to make the validationState prop of contextValue to be a function