httpStatus()); self::assertSame([ 'job' => 'demo', 'status' => 'success', 'items_processed' => 5, 'duration_ms' => 12, 'run_id' => 99, ], $outcome->toArray()); } public function testSkippedLockedMapsTo409(): void { $outcome = new JobOutcome('demo', JobStatus::SkippedLocked, 0, 1, 100, 'lock held'); self::assertSame(409, $outcome->httpStatus()); $array = $outcome->toArray(); self::assertSame('skipped_locked', $array['status']); self::assertSame('lock held', $array['error']); } public function testFailureMapsTo500(): void { $outcome = new JobOutcome('demo', JobStatus::Failure, 0, 200, 101, 'boom'); self::assertSame(500, $outcome->httpStatus()); } }