github apmantza/pi-lens v4.1.3

3 hours ago

Added

  • Record build identity at session start (refs #1775)
  • Rerun externally killed CI Unit tests once (refs #2042)
  • Recover starved CI runs and merge train-approved PRs (closes #2184, closes #2185)
  • Enable Kotlin structural linting (refs #2198)
  • Enable C/C++ memory and I/O idiom rules (refs #2201)
  • Classify a red Unit tests run as infra-kill, infra-net, or real (refs #2103)
  • Port five codemod gallery candidates (refs #2195)
  • Enable Java structural linting (refs #2197)
  • Port VTCode's no-important CSS rule (closes #2199)
  • Port 5 VTCode Go idiom rules (closes #2200)
  • Guard a shared checkout against branch switches that destroy another session's work (refs #2007)

Changed

  • Split loop_block into compute and non-CPU stalls, and name the sweep that caused one (refs #1980, #1723)
  • Cut the word-index per-edit seam's longest synchronous stretch (refs #2067)
  • Bound memory accounting (refs #2132, #2114)
  • Classify merge-train pagination truncation (closes #2134)
  • Gate word-index arena recompaction on a share of the vocabulary (refs #2246)
  • Convert the word-index per-edit occupancy guard to a load-invariant work count (refs #2254)
  • Weekly stale-issue report now flags missing priority labels (refs #1676)
  • Enforce client dependency boundaries and cycles in CI (refs #1844)
  • Add six test-authoring screens to AGENTS.md (refs #1829)
  • Reorganize AGENTS.md for retrieval (refs #1829)
  • Contributor and reviewer discipline harvested from six external skill sets plus the 2026-08-26 arc
  • PRs touching tests now carry a Test assessment, and the authoring screens grow to ten
  • Name and pin the files-touched bus seam (closes #1966)
  • Unify the pinned npm version across workflows (#2051)
  • Single-flight availability probes (refs #2131)
  • Concise zero-read recovery (closes #2335)
  • Memoize compiled gitignore globs (closes #1976)
  • Persist word-index changes incrementally off the hot path (refs #2068)
  • Shrink the word index's resident footprint by 4.6x (closes #2069)
  • Review-graph one-file rebuild (refs #2074)

Fixed

  • Identity-guard seven more in-flight promise caches against ABA eviction (refs #1968)
  • Stop the CI kill record from blaming memory it never ran out of (refs #2042)
  • Re-resolve a runner-detection alias probed before its symlink existed (closes #2077)
  • Recompact churned word-index arenas (refs #2117)
  • Dedupe review-graph edges after deferred symbol resolution (closes #2127)
  • Report every root a host serves in pilens_health (refs #2130)
  • Count every LSP client, and stop leaking a subagent's temp root (refs #2130)
  • Stamp classifiedBy on ok-path availability decisions (refs #2131)
  • Normalize review-graph.log's cwd to one form (closes #2141)
  • Repair escaped-newline flattened PR bodies in body lint (refs #2145)
  • Stop duplicate merge-train warden actions (closes #2150)
  • Bound language-server verification output (refs #2169)
  • Match the merge lane to live repository state (refs #2185)
  • Stop a routine paging repeat from reddening the merge-train warden (refs #2192)
  • Correct the Java rule set's accumulator and raw-type detection (refs #2197)
  • Deflake the output-cap tail-retention test (refs #2197)
  • Move the dirty-fraction word-index guard off wall clock (refs #2202)
  • Fix playground-verify-rule.mjs matching the wrong source (closes #2208)
  • Run the ast-grep in-process fallback on every JS/TS module extension, and record the languages it cannot serve (closes #2215)
  • Derive the project scan's ast-grep kind per file instead of hard-coding jsts (closes #2217)
  • Normalize the remaining NDJSON logger filePath fields (refs #2219, the #2141 class)
  • Remove three real-timer races from tests that only pass under CPU contention (refs #2225, #2235, #2182)
  • Make a stale compiled .js beside a `tests/
  • Make the spawn-timeout cooldown regression test load-invariant (closes #2235)
  • Bound the dispatch fact store (refs #2240)
  • Harden the dispatch fact-store pin against eviction (refs #2240)
  • Bound retained FactStore content bytes (closes #2247)
  • Napi runner css/html admission (#2248)
  • Anchor .gitignore's scratch test-* patterns to the repo root (refs #2250)
  • Baseline the git-config contamination guard against pre-suite identity (refs #2251)
  • Scope the playground source sentinel (refs #2253)
  • Bound every in-memory review-graph retention site (refs #2255, #2240)
  • Ast-grep YAML rule caches detect edited and nested files (closes #2262)
  • Topology-derived startup scan and language-profile memos re-arm with the workspace marker index at session start (closes #2263)
  • Move three Java rules off an inert files: negation glob (fixes #2280)
  • Preserve latency logger exports in test mocks (refs #2281)
  • Detect different-size project-snapshot rewrites inside one mtime bucket (closes #2285)
  • Merge-train duplicate classification (#2289)
  • Add a size axis to five mtime-only content memos (closes #2300)
  • Remove the redundant markdownlint autofix cooldown guard (closes #2301)
  • ast-grep findings survive a silent auxiliary LSP (closes #2324)
  • Auto-repair clearly flattened pull request bodies before advisory lint validation
  • Correct the vulture exit-code comment (closes #1765)
  • Read-guard eviction paths now leave a trace (#1918)
  • Record formatter cache hits (closes #1940)
  • Cap dependency-drift blocker re-serves (refs #1950)
  • Record message_end cache_usage attribution loss (closes #1956)
  • Gate nested LSP requests (closes #1971)
  • Stop re-canonicalizing already-normalized dispatch paths (refs #2016)
  • Budget CI test workers against real memory, and name an OOM kill (refs #2042)
  • Retire deleted failed-first test targets (closes #2044)
  • Bound markdownlint verification and preserve typed spawn failures (closes #2045)
  • Canonicalize test-runner cache roots (refs #2048)
  • Honor LSP file-operation filters (closes #2049)
  • Decline LSP roots outside every session project root (refs #2052)
  • Cover the whole failed-Git-integration family.
  • Make LSP spawn records count truthfully (closes #2064)
  • A crashed LSP client no longer pins its retained text forever (refs #2065)
  • Incremental LSP document text is bounded and released on close (refs #2065)
  • Per-send LSP document sync makes one JavaScript pass over the previous document instead of two, on didChange (refs #2066)
  • Intern word-index posting files (refs #2067)
  • Nested .gitignore edits now refresh ignore verdicts (closes #2071)
  • Give nested ignore rules and path verdicts one freshness clock (closes #2071, closes #1976)
  • Review-graph source-path normalization (refs #2072)
  • Clear outgoing idle-eviction timers on cache replacement (refs #2073)
  • Fail closed on truncated Git file lists.
  • Opaque-mutation exclusion counter overstated suppression (closes #2081)
  • PR-title checks now validate the live pull-request title (refs #2083)
  • PR body lint now rejects unfilled templates and recognizes the fleet's section conventions (refs #1844)
  • Read the live PR body in close-keyword syntax checks (refs #2086)
  • Read the live PR body in close-keyword verification (refs #2086)
  • Close two named remainders from the #2088 sweep-floor fix (refs #2088)
  • Closed the managed-tool seam sweep's vacuous exemption (refs #2088)
  • Governance sweeps now fail on empty populations (refs #2088)
  • Tests that could not run reported as passed (closes #2089)
  • Stop metrics-history's git probe from leaking stderr into the TUI (#2095)
  • Resolve metrics commit attribution against each target file's Git repository (closes #2099)
  • Truncated tool output is reported as truncated.
  • Rename the CI classifier's kill label to infra-kill and read kernel evidence (refs #2103)
  • Fail loudly when the stale open-issues scan is truncated (closes #2104)
  • Serialize overlapping per-path LSP didChange sends so Incremental payloads use the latest confirmed document content (closes … (closes #2113)
  • Deferred runner results remain visible and actionable (refs #2122)
  • Key session start and the host registry by project root (closes #2129, refs #2130)
  • Scope availability probe flights per owner (refs #2131, refs #2140)
  • Resolve LSP-managed release binaries before PATH (refs #2140)
  • Key process-unique state on globalThis so it survives a second module evaluation (refs #2146)
  • Distinguish clean from absent auxiliary LSP results (closes #2151)
  • Adapt the first cold auxiliary wait to observed spawn cost (closes #2152)
  • Identity-feeding sorts now use a code-unit comparator, not localeCompare (closes #2155, closes #2165)
  • Share one LSP service across module evaluations (refs #2157)
  • Consumed .gitignore files refresh at matcher lookup (closes #2159)
  • Use per-file diagnostic publication timestamps to distinguish a fresh clean primary LSP response from an absent response in the …
  • Bound the stale-findings re-arm loop and count cap-evicted pairs (closes #2167, closes #2168)
  • Bound Svelte and Prisma language-server probes, and Vue's remaining dispatch-side budget (refs #2169, #2176)
  • PR body repair keeps distinct numbered fix-round headings distinct, so legitimate multi-round bodies can be repaired while …
  • Preserve identity during concurrent instance registration (refs #2173)
  • Bound the Vue language-server verification probe (refs #2176)
  • Migrate remaining Git-using smoke scripts to the scrubbed fixture environment (closes #2177)
  • Bound the JSON and Bash language-server verification probes (closes #2194)
  • Escalate workflow runs stuck queued (closes #2203)
  • Stamp classifiedBy on every availability_decision failure arm (refs #2131, #2209)
  • Re-check test-runner negative verdicts instead of latching them (refs #2252)
  • Treat a null PR body as empty (closes #2268)
  • Make the failed-target cap test load-invariant (closes #2290)
  • Make cross-root eviction coverage load-invariant (closes #2305)
  • Normalize tabs in playground-verify's sentinel comparison, and fail fast on a stable mismatch (closes #2306)
  • Pin the availability-probe cooldown consult (closes #2309)
  • Harden the CI classifier's automatic PR comment path (closes #2318, refs #2316)
  • Schedule ast-grep NAPI rules for CSS and HTML edits, restore four sibling structural and IaC runner-kind pairs found by the class …
  • HTML ast-grep catalog coverage (closes #2325)
  • Avoid unrelated diagnostics after a conflicted Git integration.
  • Guard package-lock metadata during releases (#2043)
  • Attribute pi-lens writes and bound review-graph path normalization (refs #2070, closes #2072)
  • Prove idle-eviction replacements release graph memory (closes #2073)
  • Pin diagnostics bus publishers and subscribers (closes #2079)
  • Test-flakiness and hygiene residuals (refs #2090, closes #2139, refs #2182)
  • vi.stubEnv leak sweep undercount (refs #2090, closes #2223)
  • Guard the warmed YAML rules cache with load-invariant work counts (closes #2292)
  • Close #2298's rules-cache work-count residuals (refs #2292)
  • Isolate real-Git test fixtures and guard repository config (closes #2163)

🙏 Thanks

Thanks to the external contributors in this release:

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.