Keep the lesson for the next incident
Write filter semantics
Document fields, operators, escaping, repeated parameters, dates, timezone, empty state, pagination interaction, and unsupported combinations. State whether the server or client owns each rule. Include the expected result scope for an empty filter.
Retain readable query fixtures
Keep single, empty, multi-match, reserved-character, date, repeated-key, and unsupported examples with synthetic values. Store exact wire query, expected identifiers, and client state. Add the neighboring caller that shares serialization if it revealed the drift.
Review query changes
Watch encoder revisions, changed filter controls, unexpected broad results, empty-result spikes, and parser errors. Assign an owner and bounded threshold. Close the follow-up only when supported filters are checked across the real environments and navigation paths.
What to carry forward
Close learning with filter semantics, query fixtures, encoder owner, and recurrence signals. Keep unvalidated server parsing visible. The durable outcome is a concrete request-and-result comparison that prevents a future filter change from quietly widening or narrowing data.
Technical background: RFC Editor reference.
Keep the decision with the work.
Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.
Create an account See the product workflow