Real decisions come in steps, and each answer depends on the one before. Curva runs the whole chain in one request, stage by stage. Each question sees the earlier answers and how sure they were.
The whole flow is one call
from curva import Curva, Choice, Noul, Score
d = Curva().decide(alert, {
"system": Choice("Which system is failing?", ["database", "api", "network"]),
"severity": Score("How severe is the incident?", ["minor", "major", "critical"]).depends("system"),
"deployment_related": Noul("Did a recent deployment cause it?").depends("system"),
"rollback": Noul("Should the last deployment be rolled back now?", think=True)
.depends("severity", "deployment_related"),
})
The rollback question gets think=True: the model reasons in its own call there, while the other questions answer fast. The decision is logged once.