mirror of
https://github.com/stablyai/orca.git
synced 2026-11-02 01:57:57 +00:00
* ci: run terminal perf on demand only, on a hosted runner The nightly failed every run: the presented-frame guard accepts only GitHub-hosted Xvfb displays, but the workflow ran on Blacksmith. Drop the schedule, move dispatch runs to ubuntu-24.04 and document local use. * docs: record the first hosted terminal perf result --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
57 lines
3.6 KiB
Markdown
57 lines
3.6 KiB
Markdown
# Performance regression checks
|
|
|
|
`pnpm --silent audit:perf > performance-audit.json` scans production `src/` with
|
|
the existing app-store and buffer-concatenation rules. Warnings are advisory in this full inventory; tool/parser failures fail.
|
|
New findings from rules enabled in the changed-code configuration fail
|
|
`pnpm check:code-quality:changed`.
|
|
|
|
The `app-store-performance/no-whole-hot-map-selector` warning is advisory only:
|
|
it appears in this inventory and the performance-contracts artifact, and its
|
|
findings cannot fail the changed-code gate or other required checks. It catches
|
|
selectors returning the whole `runtimeStatusByEnvironmentId` map, which is
|
|
replaced on meaningful host observations. Select a stable derived answer inside
|
|
the selector (see `paired-runtime-parking-capabilities.ts`). Fleet consumers can
|
|
optionally silence the inventory warning with
|
|
`// oxlint-disable-next-line app-store-performance/no-whole-hot-map-selector -- <why every host is needed>`.
|
|
It resolves direct returns, module-scope named selectors and selector-local const
|
|
aliases/destructuring; it does not infer consumer lifetime or follow imported
|
|
helpers. Legitimate fleet consumers also match, so behavior-level render-isolation
|
|
assertions remain the safeguard against actual fanout regressions.
|
|
|
|
Tests, generated files, `mobile/` and `cloud/` are outside this source audit.
|
|
|
|
The ast-grep rule `config/ast-grep/rules/no-repeated-collator.yml` (`pnpm lint:ast-grep`,
|
|
an error everywhere) detects optioned `localeCompare` and `Intl.Collator` construction
|
|
inside inline `sort`/`toSorted` callbacks. Construct one collator outside the
|
|
callback, preserving locale, options and tie-breakers. If the locale changes at
|
|
runtime, reconstruct at the next sort or key the cache by locale. Bare comparisons
|
|
and standalone equality checks are allowed. There is no autofix or interprocedural
|
|
analysis: named comparators, aliases, custom methods and deferred callbacks need
|
|
manual review. A finding identifies repeated setup, not proof of visible lag.
|
|
|
|
`pnpm test:perf:contracts` runs the explicit selection in
|
|
`vitest.performance.config.ts`: SQLite statement reuse and schema parity, relay
|
|
filesystem concurrency, incremental Codex scans and reader lifetimes, pinned JSONL
|
|
readers and snapshots, linear tool-result pairing and attribution allocation,
|
|
tokenizer rejection, highlighting cache, queued cancellation, terminal backing-memory
|
|
retention and detector fixtures. Missing
|
|
listed files fail configuration loading. Tests run serially, without retries,
|
|
and inherit the full suite's setup and forced-GC support. This makes existing
|
|
regression coverage easy to run and attribute; it does not create new workload
|
|
coverage by itself.
|
|
|
|
Incremental Claude scans and persisted Claude cache checkpoints are also included.
|
|
|
|
`.github/workflows/performance-contracts.yml` runs daily and manually on Linux,
|
|
macOS and Windows, and on PRs changing this tooling or any listed contract file.
|
|
It uploads per-OS JSON test results, plus the source inventory once from Linux
|
|
because that scan is OS-independent. Its schedule starts after merge. Run the existing
|
|
`test:e2e:terminal-perf:scale:report` ([guide](../docs/readme/terminal-perf.md)) for rendered typing/frame budgets. Unit tests do not
|
|
measure SSH RTT, WSL scheduling or a packaged Electron renderer.
|
|
|
|
To extend coverage, select a production-path regression with an operation-count,
|
|
identity, queue-admission or retained-memory oracle. Confirm it fails with the
|
|
old behavior. Use controlled, counterbalanced benchmark samples for timings;
|
|
avoid new machine-dependent millisecond gates in the normal unit suite. A green
|
|
source scan and these contracts cannot establish that the whole app is fast.
|