Aglet

Learn from API nullability drift

The durable lesson is an explicit field-state model: value, null, absent, empty, filtered, or invalid. Preserve the representation and consumer effect that exposed the drift. Record where the remote contract ends and where the client must preserve uncertainty. Keep the consumer decision beside each field state.

Keep the lesson for the next incident

  1. Document field states

    Record presence, null, empty, type, permission filtering, resource state, local fallback, persistence rule, and downstream meaning. Define when an existing value may be replaced and when the field must remain unknown.

  2. Keep state fixtures

    Retain populated, null, absent, empty, filtered, malformed, update, and restart cases with synthetic records. Store expected mapper and consumer outcomes. Include the original regression shape so mapper or version changes have a concrete test.

  3. Review nullability signals

    Watch new null or absent fields, default branches, persisted value drops, permission-filtered responses, and consumer state changes by client version. Assign an owner and threshold. Close the follow-up only when supported field states run across relevant endpoints.

What to carry forward

Close learning with field-state rules, fixtures, mapper and consumer owners, and recurrence signals. Keep external semantics explicit. The useful outcome is a deliberate unknown state rather than a promise that nullable fields will always be populated. Keep remote meaning separate from local fallback.

Technical background: Project documentation on GitHub.

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