vue + fastify · Easy · form contract
A browser and API disagree at the end-to-end facet contract boundary. A catalog screen receives available facet values after every search. The current state boundary keeps selections that no longer exist, so the UI announces filters that cannot affect the visible result.
Task
Repair the shared browser-to-service contract. Normalize the query, remove unavailable selections, preserve the order of surviving selections, and derive the active-filter count used by the supplied screen adapter.