public function run($options = [])
    {
        $defaults = [
            'reporters' => null,
            'autoclear' => [],
            'ff'        => 0,
            'part'      => '1/1'
        ];
        $options += $defaults;

        $this->_reporters = $options['reporters'];
        $this->_autoclear = (array) $options['autoclear'];
        $this->_ff = $options['ff'];

        list($index, $total) = explode('/', $options['part']) + [null, null];

        $this->root()->partition($index, $total);

        $this->report('start', ['total' => $this->active()]);

        $this->_errorHandler(true, $options);

        $passed = $this->root()->process();

        $this->_errorHandler(false);

        $this->summary()->memoryUsage(memory_get_peak_usage());

        $this->report('end', $this->summary());
        $this->_status = $passed ? 0 : -1;
        return $passed;
    }