Skip to content

All kits: --scope all + *-in-loop → *-hot; jsperf adopter FPs/hints - #1

Merged
lbb00 merged 5 commits into
mainfrom
jsperf-lint/adopter-fp-and-hints
Oct 29, 2026
Merged

lbb00 merged 5 commits into
mainfrom
jsperf-lint/adopter-fp-and-hints

Conversation

@lbb00

@lbb00 lbb00 commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Extreme-perf policy across every packages/* kit (same PR as the jsperf adopter work):

  1. Default scope all — former loop/hot-path smells also match outside loops; opt in to --scope loop (or kit-equivalent) for the old loop-only match.
  2. Messages / guides rewritten so they do not imply “only fix in a loop/hot path” (AI-misleading).
  3. Slug rename — every active *-in-loop (and equivalents) → *-hot; old slugs tombstoned under evidence/_removed/*.REMOVED.md per AGENT.md (never reuse). ~106 renames; see each kit docs/rule-ids.md Renamed table.

Also keeps the earlier jsperf adopter FP cuts + new hints (jp-query-all-star, jp-execjs-in-timer, jp-clone-per-event).

Kits covered

arktsperf, beamperf, cperf, cppperf, csharpperf, dartperf, goperf, jsperf, jvmperf, kotlinperf, luaperf, nimperf, objcperf, phpperf, pyperf, rubyperf, rustperf, swiftperf, zperf (+ shared docs: smell-catalog, rule-regression, rule-id-map, CHANGELOG, AGENT).

Notes

  • No severity escalations.
  • Self-lints that would hit under scope=all pin --scope loop.
  • zperf: matchHot for alloc/print/open/clock/json; fixture classic pairs still under scope_all=false.
  • jvmperf FixtureTest uses loop scope for classic good/bad pairs; product default remains all.
  • objcperf: CLI now parses --scope all|loop (sets g_scope_all); usage/self-lint already expected it.

Test plan

  • jsperf / arktsperf / pyperf / goperf / rustperf / cperf / objcperf / swiftperf (text-lint) smoke (+ self-lint where present)
  • zperf zig build test
  • bash scripts/privacy-check.sh / doc-check.sh / sync-check.sh
  • CI fix 5f5cc5d: cppperf compile (default-arg once), goperf fixture package + //go:build ignore, lua/ruby/cpp (+ other kits) self-lint --scope loop, jvmperf FixtureTest/ignore fixtures
  • CI fix f18bf00: objcperf-lint parse --scope so self-lint no longer exits 2 — full CI green on this PR

Head

f18bf00 on jsperf-lint/adopter-fp-and-hints.

lbb00 added 3 commits October 27, 2026 15:49
Adopter feedback: loop-header and nested-function false positives,
broader test/e2e path skips, and new hints that can see JS inside
executeJavaScript/evaluate templates.

- Scope in-loop smells to the loop body (not for/of headers)
- Skip nested function/arrow bodies defined inside loops
- Skip e2e/, playwright-report/, *.test.*/ *.spec.*
- Add hint rules jp-query-all-star, jp-execjs-in-timer, jp-clone-per-event
- Paired fixtures, smoke, docs/CHANGELOG; no severity escalations
Report former in-loop smells everywhere by default so extreme-perf
stacks and AI readers do not treat non-loop sites as out of scope.
Opt in with --scope loop for the old in-loop-only match. Refresh
messages, docs, fixtures, and smoke accordingly.
Default matching reports outside loops/hot paths; opt in with --scope loop
(or kit-equivalent). Finding messages/guides no longer imply loop-only fixes.
Renamed ~106 in-loop slugs to *-hot across packages/* with tombstones under
evidence/_removed (never reuse). Updated smell-catalog, rule-id maps,
CHANGELOG, AGENT. Self-lints that hit under scope=all use --scope loop.
@lbb00 lbb00 changed the title jsperf-lint: cut loop FPs and add template-aware hints All kits: default --scope all; rename *-in-loop → *-hot (+ jsperf adopter fixes) Oct 27, 2026
@lbb00 lbb00 changed the title All kits: default --scope all; rename *-in-loop → *-hot (+ jsperf adopter fixes) All kits: default --scope all; rename *-in-loop → *-hot Oct 27, 2026
lbb00 added 2 commits October 27, 2026 20:06
… jvm fixtures

- cppperf: drop default scope args from scan.cpp definitions (keep in header)
- goperf: unify fixture package names; //go:build ignore so go test ./... skips them
- self-lint: pin --scope loop for kits that dogfood under default scope=all
- jvmperf: classic FixtureTest pairs use scopeAll=false; exitCodes --scope loop;
  disableByName + ignore fixtures use *-hot short names
Usage and self-lint already required --scope loop, but main.c treated
it as an unknown flag and exited 2, failing CI objcperf smoke.
Wire g_scope_all the same way as sibling C kits.
@lbb00 lbb00 changed the title All kits: default --scope all; rename *-in-loop → *-hot All kits: --scope all + *-in-loop → *-hot; jsperf adopter FPs/hints Oct 29, 2026
@lbb00
lbb00 merged commit a23bc10 into main Oct 29, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant