Aglet

Learn from API filter encoding drift

The useful lesson is a filter contract that can be read before values reach the network. Preserve the encoded example that exposed the issue, the result difference, and the distinction between missing, empty, and broad. Keep server defaults and client ownership named where they affect safety.

Keep the lesson for the next incident

  1. 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.

  2. 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.

  3. 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