-- A property cannot be its own parent. Deeper cycle prevention (e.g.
-- A→B→A) is enforced in the service layer because Postgres can't express
-- recursive CHECK constraints; the assertNoCycle helper in
-- src/lib/server/services/properties.ts walks ancestors before save.
ALTER TABLE "properties"
  ADD CONSTRAINT "properties_parent_not_self"
  CHECK (parent_id IS NULL OR parent_id <> id);
