Skip to content

Performance measurement status: ratchet is not consulted; startup regressed 5ms -> 9ms unnoticed #663

Description

@nnunley

Problem

Performance regressions land silently. The bench-ratchet machinery exists (make bench-ratchet, docs/perf/baseline.json, #651) but nothing in the development loop requires consulting it, so work that costs performance merges without anyone deciding to spend it.

Concrete symptom: startup time regressed from ~5ms to ~9ms wallclock (lg -e '(+ 1 1)', measured 2026-07-31 on main @ c809e33). No one chose that cost; it accumulated.

What this issue asks for

A general performance-measurement status discipline, not a one-off fix:

  • A visible answer to "are we at par with baseline?" — a status surface (CI lane, make target summary, or perf page) that reports current vs docs/perf/baseline.json including startup time.
  • Startup time tracked as a first-class ratchet metric (it is the user-facing number; bootprobe/lgbstat from feat(cmd): bootprobe + lgbstat — core boot and bundle diagnostics #623 give the decomposition).
  • Root-cause and recovery of the lost ~4ms startup, or an explicit recorded decision accepting it.

Non-goals

Specific optimizations (those belong under #464 and its children). This is about measurement + status, so future losses are chosen, not discovered.

Related: #464 (runtime performance epic), #651 (baseline seeding from CI), #623 (bootprobe/lgbstat diagnostics).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions