Files
ruvnet__ruflo/verification/linux/performance.jsonl
Reuven b4a60e0374 feat: performance verification + capability historical reference
Adds a fourth verification layer alongside the existing three (smoke
tests, witness manifest, marker-presence history): per-OS performance
measurements that catch speed regressions the way markers catch presence
regressions.

What's added
────────────

  plugins/ruflo-core/scripts/witness/perf.mjs
    Benchmark runner. Each capability is one synchronous bench function
    in a runners map; failures throw and get recorded as error entries.
    Supports --baseline to compare against the rolling-5 median per
    capability and --json for CI consumption.

  verification/<os>/performance.jsonl  (one per OS, append-only)
    Schema: { v, commit, issuedAt, os, capability, durationMs, ... }
    Same per-OS organization as manifest.md.json + history.jsonl —
    different platforms have different native code paths so absolute
    numbers don't compare directly, but per-OS trends do.

  verification/CAPABILITIES.md
    Historical reference: which capabilities are tracked, why each
    matters, reference baselines (macOS-class hardware), and incident
    history (#1867 Node 26 install, #1859/#1862 hooks, #1608
    bcrypt→bcryptjs, ADR-009 fallback chain). Documents the pattern
    of `durationMs` regression detection and the schema.

Capabilities (initial set)
──────────────────────────

  install_pack         pnpm pack @claude-flow/memory  (370ms macOS)
  install_no_optional  npm install --omit=optional   (~5s; CI-skipped)
  memory_load          cold import('@claude-flow/memory') (18ms)
  memory_round_trip    createDatabase + store/get + close (CI-skipped)
  witness_verify       verify.mjs --manifest          (53ms)

CI integration
──────────────

  v3-ci.yml witness-verify job gains a 'Performance verification' step
  that runs the lightweight subset (install_pack, memory_load,
  witness_verify) with --baseline and appends results. Heavier benches
  (install_no_optional, memory_round_trip) are local-only — adopters
  run the full suite during release prep.

  Soft gate (`|| echo … non-blocking`) until baselines stabilise; can
  be promoted to hard gate by removing the suffix.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-05-09 11:14:47 -04:00

0 lines
0 B
JSON