heroic requires composer.lock