Skip to content

Production Filter Checklist

Use this list to review any filter before using it in production. Every item should be answered with "yes" or "not applicable".


Scope

  • [ ] Does the filter start with type = "FamilySymbol" or type = "FamilyInstance" — never the full dataset?
  • [ ] Is values.isEditable = true included if the rule targets loadable families?
  • [ ] Is values.isInPlace = false included if in-place families should be excluded?
  • [ ] Is values.category.type = "Model" included to exclude annotation and internal categories?
  • [ ] Are problematic categories like OST_DetailComponents explicitly excluded?
  • [ ] Does the category condition use category.label (not category.name)?

Relationships

  • [ ] Does category filtering happen on FamilySymbol, not on FamilyInstance?
  • [ ] Are instances linked to their scope via parent.id in $symbolIds?
  • [ ] Is the Family level included if naming conventions or editability must be checked?

Shared parameters

  • [ ] Are shared parameters accessed by GUID key (p_<guid>), not by name?
  • [ ] Is $exists() used before reading a parameter that may not be bound?
  • [ ] Does the output return null explicitly when a parameter is absent (not undefined)?
  • [ ] Is hasValue included in the output when the validator needs to distinguish "no value" from "not bound"?

Output shape

  • [ ] Does the output include id, type, and name?
  • [ ] Does the output include only the fields needed for validation — nothing extra?
  • [ ] Are field names in the output consistent with what the validator expects?

Data quality

  • [ ] Does the filter not exclude elements based on the value being validated?
  • [ ] Are missing values passed through to the validator (not filtered out silently)?
  • [ ] Has the filter been tested against data that should produce failures?

Readability

  • [ ] Are variable names descriptive ($doorSymbolIds, not $ids)?
  • [ ] Are configuration values (GUIDs, category lists) defined at the top of the expression?
  • [ ] Would another person understand the filter's intent without asking?