Ir.Schedule_outcomeval sexp_of_phase : phase -> Sexplib0.Sexp.tval sexp_of_resource : resource -> Sexplib0.Sexp.tval sexp_of_severity : severity -> Sexplib0.Sexp.tval sexp_of_execution_effect : execution_effect -> Sexplib0.Sexp.tval compare_execution_effect : execution_effect -> execution_effect -> intval equal_execution_effect : execution_effect -> execution_effect -> booltype cause = | Illegal_schedule of {}| Unsupported of {}| Resource_exceeded of {resource : resource;requested : int;limit : int option;detail : string;}| Backend_rejected of {backend : string;stage : string;severity : severity;detail : string;}| Unclassified of {phase : phase;exn_constructor : string;detail : string;}| Seed_evicted of {}A detected seed site the search declined to propose because a candidate-volume cap bound (gh-ocannl-541): the site was reachable and ranked, and lost only to the cap. Recorded in the decline census so a previously-proposed site that stops being proposed leaves a signal instead of vanishing. family names the seed family (e.g. "split_reduce").
| Not_dispatched of {}A candidate the search refused to run on a GPU backend because it binds no hardware dimension (gh-ocannl-532): the whole routine would execute in one work-item. Nothing is wrong with the candidate — the backend's execution model is what rejects it — but it is a decline like any other, and leaving it out of the census made a GPU search that timed one candidate indistinguishable from one whose candidates all failed (gh-ocannl-543). origin names where the refusal happened: "baseline" (the serial baseline), "candidate" (a compiled candidate that degenerated to a serial form), or "beam_move" (a menu move pruned before compile because it provably cannot parallelize an already unparallelized incumbent).
val sexp_of_cause : cause -> Sexplib0.Sexp.tval sexp_of_rejection_key : rejection_key -> Sexplib0.Sexp.tval compare_rejection_key : rejection_key -> rejection_key -> intval equal_rejection_key : rejection_key -> rejection_key -> boolval key_of_cause : cause -> rejection_keyval detail_of_cause : cause -> stringval exception_of_cause : cause -> exntype fatal = {exn : exn;backtrace : Stdlib.Printexc.raw_backtrace;phase : phase;candidate : string option;}phase is where the failure was raised, not where the enclosing protect was installed: a narrow tag or a preserved cause reports its own phase, and a backend classifier's answer is pinned to the phase it was handed. This is what lets a report say whether a candidate died at link, at launch, or at sync.
val sexp_of_classified_cause : classified_cause -> Sexplib0.Sexp.tval equal_classified_cause : classified_cause -> classified_cause -> booltype 'a outcome = ('a, failure) Stdlib.Result.tval fatal_of_classified : ?candidate:string -> classified_cause -> fatalEscalates a classified rejection that cannot be contained after all — a launch failure whose execution effect is Writes_may_have_occurred, with no API to restore the damaged lineage. The cause is rendered into its public exception; the backtrace is the escalation site, since the original raise was already contained.
exception Raised_at of phase * exn * Stdlib.Printexc.raw_backtraceval sexp_of_provenance : provenance -> Sexplib0.Sexp.tval compare_provenance : provenance -> provenance -> intval equal_provenance : provenance -> provenance -> boolval protect :
?strict:bool ->
classify_backend:(phase -> exn -> classified_cause option) ->
provenance:provenance ->
phase:phase ->
?candidate:string ->
(unit -> 'a) ->
'a outcomeRuns a phase boundary while preserving typed causes and raw backtraces. strict is exposed for policy tests; production callers should omit it and use strict_failure_classification.
val tag : phase -> (unit -> 'a) -> 'aTags an exception with the narrow phase where it was raised, preserving its raw backtrace. Existing typed transport exceptions pass through unchanged.
val raise_cause : cause -> _Renders a typed internal cause using the exception contract of the existing public APIs.
val raise_failure : failure -> _Re-raises a fatal failure with its original backtrace, or renders a classified cause.