Noetis API reliability: runs now finish or fail honestly
A small number of submitted runs could do the analysis work and never return a report. That class of failure is now closed.
What was happening
Analysis runs are processed in the background. In some conditions the background process was ended by the hosting runtime before the result was written, so a run could consume model work and still sit in a running state. Polling clients saw no report and no failure.
What we changed
- Background processing is now started by the database itself rather than depending on a request that may already have ended.
- Provider calls are bounded, and each run has an overall execution cutoff instead of running until something gives up.
- Saving a result verifies it belongs to the current attempt, and a failed save stops the run rather than silently retrying and charging again.
- A run that cannot complete is marked failed with a readable reason, so a client stops polling instead of waiting indefinitely.
Evidence-limited results
Some runs finish with material the release gate would not approve. The API reports these as succeeded with a release status of incomplete, and the withheld material is described in the response. That is the intended behaviour: the gate exists to stop unsupported claims reaching a report.
Typical timing
A normal deep run takes roughly 70 to 110 seconds end to end. Asynchronous submission returns a run identifier immediately for polling.
