Aglet

Triage webhook payload schema evolution

A payload can remain valid JSON while changing a required field, type, or meaning. Freeze one changed delivery and record event type, version label, field presence, decoder result, and effect. Separate additive data, removal, rename, type change, and parser regression.

Establish what is happening

  1. Capture the changed shape

    Record event ID, event type, schema or API version, field names and types, endpoint, receiver revision, and disposition. Redact values and secrets. Note whether the request was rejected, stored, or processed with a fallback.

  2. Compare old and new

    Run an old payload, added field, removed field, renamed field, changed type, and malformed payload through the same decoder. Compare required-field checks, unknown-field handling, mapper state, and side effects. Record the version beside the field change.

  3. Bound consumer impact

    Group changes by event type, field, endpoint, version, handler revision, and downstream workflow. Separate parse failure, semantic change, and display-only difference. Preserve identity and any pending state for unsupported shapes. Preserve the field difference in the comparison.

What to carry forward

Triage ends with the changed field or version, first decoder boundary, affected consumer, and evidence gap. Quarantine unsupported shapes before effects. Route schema, parser, and workflow questions separately. Keep unsupported shapes out of side effects while the contract is reviewed.

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