Treat any change to a public interface (PDK function signatures, plugin config/schema fields, or other externally-consumed API contracts) as a compatibility commitment.

Do

Don’t

Example (signature change rule)

-- Before
function compose_tags(service_name, status, consumer_id, tags, conf) end

-- After (append new param at the end)
function compose_tags(service_name, status, consumer_id, tags, conf, route_name) end

Apply this checklist whenever a change touches externally-defined contracts: if users (or other plugins) might call it, update it with backward compatibility as the default and a documented migration/compat story.