Things to potentially look into:
- run checks for item that has been edited (possibly excluding bot edits)
- measure the average duration of the constraint check run on a single item
- have a special job queue to run constraint checks after edits
- results of constraint check are only stored in the cache - they can be evicted from the cache if there is too many results to be stored
- links table (possible way to figure out which items are affected by the edit)
- evaluate constraint definition for checking strategy (e.g. items that only have "local checks", i.e. checks that only affect the "current" item)
Going through the list options, including creating actionable tasks is going to be limited to 4 hours.