--- name: lading-optimize-hunt description: Coordinates optimization attempts. Captures baselines, implements changes, invokes review, and records outcomes. allowed-tools: Bash(cat:*) Bash(cargo:*) Bash(ci/*:*) Bash(hyperfine:*) Bash(*/payloadtool:*) Bash(tee:*) Read Write Edit Glob Grep Skill --- # Optimization Hunt Coordinates optimization attempts: captures baselines, implements changes, invokes review, and records all outcomes. ## Role: Coordinator and Recorder Hunt is the **coordinator and recorder** — it captures baselines, implements changes, hands off to review, and records all outcomes. Hunt does NOT: - Run post-change benchmarks (review does this) - Make pass/fail decisions on optimizations (review does this) Hunt DOES: - Record all verdicts and outcomes in `.claude/skills/lading-optimize-hunt/assets/db.yaml` after review returns --- ## Phase 0: Pre-flight Run `/lading-preflight`. --- ## Phase 1: Find Target Run `/lading-optimize-find-target`. It returns a YAML block with 6 fields: `pattern`, `technique`, `target`, `file`, `bench`, `fingerprint` - Print it out. --- ## Phase 2: Establish Baseline **CRITICAL: Capture baseline metrics BEFORE making any code changes.** ### Identify the Benchmark Target Use the `bench` and `fingerprint` fields from find-target's output — they are repo-relative paths ready to use: ```bash BENCH= # e.g. from "lading_payload/benches/syslog.rs" use "--bench syslog" PAYLOADTOOL_CONFIG= # e.g. "ci/fingerprints/syslog/lading.yaml" ``` ### Stage 1: Clear previous benchmarks Clear any previously captured baselines so stale data cannot contaminate this run. ```bash rm -f /tmp/criterion-baseline.log /tmp/baseline.json /tmp/baseline-mem.txt rm -rf target/criterion ``` ### Stage 2: Micro-benchmark Baseline Run **only** the benchmark for your target: ```bash cargo criterion --bench "$BENCH" 2>&1 | tee /tmp/criterion-baseline.log ``` ### Stage 3: Macro-benchmark Baseline Use the matching fingerprint config: ```bash cargo build --release --bin payloadtool hyperfine --warmup 3 --runs 30 --export-json /tmp/baseline.json \ "./target/release/payloadtool $PAYLOADTOOL_CONFIG" ./target/release/payloadtool "$PAYLOADTOOL_CONFIG" --memory-stats 2>&1 | tee /tmp/baseline-mem.txt ``` **Baseline captured.** These files will be consumed by review: - `/tmp/criterion-baseline.log` — micro-benchmark baseline - `/tmp/baseline.json` — macro-benchmark timing baseline - `/tmp/baseline-mem.txt` — macro-benchmark memory baseline **CRITICAL: All benchmarks must complete before continuing.** --- ## Phase 3: Implement Make ONE change. Keep it focused and minimal. Before proceeding, ALL changes must pass: ```bash ci/validate ``` **No exceptions. If ci/validate fails, fix the issue before continuing.** If `ci/validate` repeatedly fails on a **pre-existing bug** (not caused by your change), document it and stop. --- ## Phase 4: Hand Off to Review Run `/lading-optimize-review` with the target fields as positional arguments: ``` /lading-optimize-review ``` Where: - `` — benchmark name from find-target's `bench` field, without path or extension (e.g. `trace_agent`) - `` — repo-relative path from find-target's `fingerprint` field - `` — repo-relative path from find-target's `file` field - `` — function name from find-target's `target` field - `` — technique from find-target's `technique` field It returns a YAML report. Print it out. --- ## Phase 5: Recording After review returns its YAML report, record the result. Every outcome MUST be recorded. ### Step 1: Write the Report Write review's YAML report **verbatim** to `.claude/skills/lading-optimize-hunt/assets/db/.yaml`. Do not modify, reformat, or add to the report content — it is the authoritative record from review. ### Step 2: Update the Index Add an entry to `.claude/skills/lading-optimize-hunt/assets/db.yaml` following the format in `.claude/skills/lading-optimize-hunt/assets/index.template.yaml`. ---