Paths: File paths (shared/ , references/ , ../ln-* ) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
ln-813-runtime-optimizer
Type: L3 Worker Category: 8XX Optimization Parent: ln-810-performance-optimization-coordinator
Fixes runtime performance issues found by ln-653-runtime-performance-auditor. Each fix verified via tests + lint with keep/discard pattern.
Overview
Aspect Details
Input Audit findings from docs/project/persistence_audit.md (ln-653 section) OR target file
Output Optimized code, verification report
Companion ln-653-runtime-performance-auditor (finds issues) → ln-813 (fixes them)
Workflow
Phases: Pre-flight → Load Findings → Prioritize → Fix Loop → Report
Phase 0: Pre-flight Checks
Check Required Action if Missing
Audit findings OR target file Yes Block optimization
Test infrastructure Yes Block (need tests for verification)
Linter available No Skip lint step in verification
Git clean state Yes Block (need clean baseline for revert)
MANDATORY READ: Load shared/references/ci_tool_detection.md — use Test Frameworks + Linters sections.
Worktree & Branch Isolation
MANDATORY READ: Load shared/references/git_worktree_fallback.md — use ln-813 row.
Phase 1: Load Findings
From Audit Report
Read docs/project/persistence_audit.md , extract ln-653 findings:
Finding Type Optimization
Blocking IO in async asyncio.to_thread() , aiofiles , async HTTP client
String concat in loop StringBuilder (.NET), "".join() (Python), template literals (JS)
Unnecessary allocations Pre-allocate collections, object pooling, Span<T>
Sync sleep in async asyncio.sleep() , Task.Delay() , setTimeout
Redundant serialization Cache serialized form, avoid round-trip JSON in memory
From Target File
If no audit report: scan target file for runtime patterns matching the table above.
Phase 2: Prioritize Fixes
Priority Criteria
1 (highest) Blocking IO in async context (blocks event loop)
2 Sync sleep in async (starves thread pool)
3 Allocations in hot loop (GC pressure)
4 String concatenation patterns
5 Other micro-optimizations
Phase 3: Fix Loop (Keep/Discard)
Per-Fix Cycle
FOR each finding (F1..FN):
- APPLY: Edit code (surgical change)
- VERIFY: Run tests IF tests FAIL → DISCARD (revert) → next finding
- VERIFY: Run lint (if available) IF lint FAIL → DISCARD (revert) → next finding
- BOTH PASS → KEEP
- LOG: Record fix for report
Keep/Discard Decision
Condition Decision
No tests cover affected file/function SKIP finding — log as "uncovered, skipped"
Tests + lint pass KEEP
Tests fail DISCARD + log reason
Lint fail (new warnings) DISCARD + log reason
Lint unavailable KEEP (tests sufficient)
Phase 4: Report Results
Report Schema
Field Description
source Audit report path or target file
findings_total Total findings from audit
fixes_applied Successfully kept fixes
fixes_discarded Failed fixes with reasons
fix_details[] Per-fix: finding type, file, before/after description
Configuration
Options:
Source
audit_report: "docs/project/persistence_audit.md" target_file: ""
Verification
run_tests: true run_lint: true
Scope
fix_types: - blocking_io - sync_sleep - unnecessary_alloc - string_concat - redundant_serialization
Error Handling
Error Cause Solution
No audit findings ln-653 not run or no issues Report "no findings to optimize"
Async rewrite complex Deep call chain affected Log as manual step, skip
Framework-specific pattern Unknown async framework Query Context7/Ref for docs
References
-
../ln-653-runtime-performance-auditor/SKILL.md (companion: finds issues)
-
shared/references/ci_tool_detection.md (test + lint detection)
Definition of Done
-
Findings loaded from audit report or target file scan
-
Fixes prioritized (blocking IO first, then sync sleep, allocations, string concat)
-
Each fix applied with keep/discard: tests + lint pass → keep, either fails → discard
-
Report returned with findings total, fixes applied, fixes discarded
Version: 1.0.0 Last Updated: 2026-03-08