Hi Sergey,
I'm not sure I understand what you're asking, but a few points:
• Prefect works fine with make-like execution results, where tasks are only recomputed as needed. See
https://docs.prefect.io/core/concepts/persistence.html, in particular around task targets. This would only detect if the expected output isn't present (and would skip the task if it already exists), it wouldn't check if the code needed to prodce that output changed (you'd need to manage that on your own).
• Prefect doesn't have a DB-based result type (we could add one), but I'm not sure it makes sense. If you want prefect to check if a DB table/row exists and do something if it doesn't you'd need to implement that inside your prefect task, rather than relying on prefect
Result
types to manage that for you.
The general answer is - prefect is a general workflow dag system. We have primitives around tasks, collections of tasks (flows), and task outputs (results) - so anything you can do in one workflow tool should be expressible in prefect. You might have to build some custom functionality to detect changes/skip tasks how you want, but there's nothing about prefect that should make this impossible.