explain
Show a candidate sink's obligation, guard, reverse-flow cone, and enclosing function source in one result. Pass candidate_id or file and line to get provenance and dataflow evidence.
Instructions
One shot from a candidate (by id, or by the sink's file:line) to a judgeable picture: the obligation and where it lands, the guard the enclosing function does or does not place over it, the bounded reverse value-flow cone into the sink, and the enclosing function's source read inline -- the census->candidates->detail->sources_of->read_body chain composed into one result. Provenance and guard are evidence, not verdicts: an empty cone is 'nothing observed under this tier', not 'unreachable'. Pass candidate_id, or file and line.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | with `line`: locate the sink by position (full path, suffix, or basename) | |
| line | No | with `file`: the sink's source line | |
| format | No | text (compact, default) | json (structured result page) | |
| temporal | No | evaluate the temporal families (double-free/UAF/...). Default true. Set false for the guaranteed-bounded fast path: structural families only, no dataflow tier -- use it when a large graph makes the full bind run long. The result's `temporal_evaluated` flag reports whether they were evaluated. | |
| hard_stop | No | wall-clock budget (seconds) for the temporal families; on expiry the result degrades to the structural families with `temporal_evaluated:false` rather than hang. 0 = unbounded. | |
| candidate_id | No | the candidate to explain (from candidates/census) | |
| max_source_chars | No | cap on the inlined enclosing-function source | |
| provenance_limit | No | cap on reverse-cone source nodes shown |