*/ class RunResultFactory extends Factory { public function definition(): array { $visible = $this->faker->numberBetween(20, 400); $reasoning = $this->faker->numberBetween(0, 2000); $ttft = round($this->faker->randomFloat(2, 0.1, 4), 2); $wall = round($ttft + $this->faker->randomFloat(2, 0.5, 60), 2); $ok = $this->faker->boolean(70); $payload = [ 'level' => null, 'section' => null, 'name' => null, 'ok' => $ok, 'ttft' => $ttft, 'wall' => $wall, ]; return [ 'benchmark_run_id' => BenchmarkRun::factory(), 'suite' => 'softbench', 'section' => $this->faker->randomElement(['code', 'reasoning', 'constraints', null]), 'task' => $this->faker->randomElement([ 'first_occurrence', 'merge_intervals', 'version_compare', 'rbac_missing_verb', 'oom_innocent_victim', ]), 'level' => $this->faker->randomElement(['off', 'low', 'medium', 'xhigh']), 'ok' => $ok, 'decode' => round($this->faker->randomFloat(2, 10, 150), 2), 'user_tps' => round($this->faker->randomFloat(2, 5, 100), 2), 'ttft' => $ttft, 't_answer' => $ttft, 'wall' => $wall, 'reasoning' => $reasoning, 'visible' => $visible, 'total' => $visible + $reasoning, 'tool_calls' => null, 'checks_passed' => null, 'checks_total' => null, 'finish' => $ok ? 'stop' : $this->faker->randomElement(['stop', 'length']), 'detail' => null, 'payload' => $payload, ]; } public function forSuite(string $suite): static { return $this->state(fn () => ['suite' => $suite]); } }