Skip to content

Consider non-procedural fixes and other suggestions for the validation framework #33

@nvmkuruc

Description

@nvmkuruc

We've been discussing some potential usages of the framework (#29).

  • Users may want to preview, inspect, and/or log the proposed fixes before applying them
  • Users may want validators to be notice driven (only run material validation on the materials that have been edited)
  • Users may want to know if a fix may invalidate previous validations. Consider a validator that repairs broken material bindings. Expensive geometry validators could be asked if their results are affected by changes to material:binding properties and avoid rerunning after a fix was applied. The framework could reward schema and validator developers for separating concerns such that they can be independently validated.
  • Users may need to validate time samples as a unit, not individual time samples. For example, a hitch in animation may be only observable by looking at three consecutive samples and the proposed fix may only make sense with that context and adjusting in concert.
  • A validator might want to propose alternative sets of fixes (or sites) for a single error. Many times in OpenUSD, opinions aren’t incorrect, they’re just in conflict and a user needs to pick from a menu of possible repairs. Even the same fix might have multiple viable sites (ie. repair the source layer or override sparsely in the root layer).
  • There may be cases where fixes need to interact with a backing asset system and do more invasive surgery. As a specific example, converting “heavy” usda files to usdc.

Overall, we’d suggest validators that can communicate fixes declaratively in terms of something akin to SdfChangeList could address several of the above usages. Fixes might be categorizable in three ways. The purely declarative and site declarative fixes would allow for varying levels of introspection and dependency analysis that a validation framework could leverage.

  • Purely Declarative: The proposed sites and values for a fix can be communicated entirely declaratively. Users would have complete introspection into what a fix would do.
  • Declarative Sites, Procedural Value: The proposed sites can be declaratively communicated, but introspection into the actual value change may be limited due to performance considerations of pre-computing and storing the set of fixes in memory.
  • Purely Procedural: The changes may not be efficiently describable in terms of a set of fix sites.

Thanks for the consideration!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Update

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions