Aglet

Learn from webhook payload schema drift

The durable lesson is a schema contract linking event type, version, required fields, unknown-field policy, decoder, and effect. Preserve the changed shape and consumer consequence that exposed the gap. Keep unsupported versions and external sender timing visible for each downstream consumer.

Keep the lesson for the next incident

  1. Document schema rules

    Record event types, versions, required and optional fields, types, unknown-field policy, identity, acknowledgement, quarantine, migration, and owner. Define safe behavior for removed or renamed fields. Keep event identity beside the schema rule.

  2. Keep version fixtures

    Retain old, additive, removed, renamed, type-changed, unknown, malformed, restart, and retry cases with synthetic events. Store expected branch, state, and effect. Include the original schema drift. Preserve the old shape for comparison.

  3. Review schema signals

    Watch parser failures, unknown versions, missing fields, changed types, quarantine growth, and state differences by endpoint. Assign an owner and threshold. Close the follow-up only when effect-bearing handlers exercise versions in use. Keep state differences visible to reviewers.

What to carry forward

Close learning with schema rules, fixtures, decoder and migration owners, and drift signals. Keep sender contracts explicit. The useful outcome is a controlled unsupported state and migration path, not permissive parsing everywhere. Review schema updates with each effect-bearing consumer.

Technical background: GitHub documentation.

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