$details 부가 정보 (composer 출력, bundle 크기 등) */ public function __construct( public readonly VendorMode $mode, public readonly string $strategy, public readonly int $packageCount = 0, public readonly float $durationSeconds = 0.0, public readonly array $details = [], ) {} public static function skipped(VendorMode $mode, string $reason): self { return new self( mode: $mode, strategy: 'skipped', details: ['skip_reason' => $reason], ); } }