github apmantza/pi-lens v4.1.6

2 hours ago

Added

  • Add an advisory incremental Stryker lane for changed scripts (refs #1844)
  • CI failures now distinguish infrastructure outages from real test failures and arm one rerun
  • Add an AST governance sweep for vi.mock factories that omit production exports
  • Add an advisory Windows Vitest lane (refs #2536)
  • Add the tool-smoke install lane to the release-QA baseline (refs #2663, #2784)
  • Add a TypeScript strictness spike with scratch configs, per-directory counts, a two-sided ratchet, and an advisory report lane (refs #2697)
  • Add a cwd-sensitive yamllint tool-smoke row (refs #2697, refs #2691)
  • Add tool-smoke cwd rows for nested discovery (refs #2777)
  • Add one command for every mechanical PR gate (refs #2790, #2784)
  • Stamp one session-scoped turn identifier on observability sink rows (refs #2815).
  • Add a real pi RPC harness for load, tool-set restore, and read-guard scenarios (refs #2825)
  • Make Knip a hard local preflight gate and cover every admitted test lane
  • Gate nightly LSP smoke rows on primary diagnostics
  • complexity (advisory) CI job dogfoods pi-lens's own complexity client over clients/, tools/ and mcp/ (refs #2697)
  • One session-end line names the tools never activated or called (refs #2800)
  • Per-call tool-result observability
  • Guard workflow shell portability (refs #2625, #2784)
  • Record injected bytes and repeated findings per turn (refs #2838)
  • Check lockfile completeness under CI's npm (refs #2803, #2784)
  • tools.<name>.enabled proven through a real pi RPC session (refs #2800)

Changed

  • Keep admission registries sorted and enforce declaration order with one shared sweep helper (refs #2671, #2784).
  • Skip the PR title, body and close-keyword checks for dependabot PRs (refs #2714)
  • Trim the three largest tool parameter schemas and pin both host rosters (refs #2800).
  • Adaptively demote budget-hitting auxiliaries, re-promote fast late answers, and deliver findings through the deferred runner path (refs #2810).
  • Tool probes and hand-derived package roots resolve through shared seams (refs #2894)
  • Preserve per-row auxiliary publication evidence semantics (refs #2892)
  • ast_grep_dump folded into ast_grep_search (refs #2800)
  • Audit and update user-facing and contributor docs against master for the v4.1.6 cut.
  • Fold lsp_diagnostics into lens_diagnostics with source and scope modifiers; retain the MCP compatibility shim for one release.
  • Make the oxfmt format check a CI gate (refs #2790, #2784)
  • Fold allowStamp out of auxiliary coverage (closes #2914)
  • One result renderer for pi tool results and the MCP mirror (refs #2800)
  • Dropped a no-op string replacement in the tsgolint preflight test (refs #2709)
  • Pin the tool-roster description budget and trim paid metadata (refs #2800)
  • Add per-tool enablement (refs #2800)
  • sql-injection (TypeScript tree-sitter rule) is a warning, not a blocking error.

Fixed

  • Windows lane enumerated zero files because six scripts detected "am I the entry module" by string-comparing import.meta.url with file://${process.argv[1]}
  • Bound turn-end Gitleaks classification (refs #2575)
  • Prune merged clean worktrees with a per-run cap; never a tree with untracked files (refs #2631, #2538, #2784)
  • The format smoke lane installs the managed formatters it selects (refs #2767)
  • Unify tool cwd and root resolution (refs #2777)
  • Fix runner no-config advisories logging once per tool and root at debug level (refs #2811)
  • Key vi.mock export admissions by factory content and ratchet missing counts across line moves.
  • Make vi.mock export sweep warnings visible in default Vitest output and keep baseline regeneration successful when admissions …
  • Harden real pi harness waits and isolation (refs #2825)
  • Verify explicit existing records in PR-body observability lint (refs #2855)
  • Report peak RSS for exit-137 classifications (refs #2856)
  • Attribute pi situational-tool observations by session file and emit on replacement.
  • Fail session-start tests when the awaited handler crashes or exceeds its test budget, instead of passing vacuously.
  • Bound joined tool-result text with one conservative footer reserve, write one complete-result log, and convert rejecting pi tool executions into contract errors.
  • Derive lens diagnostics limits and scope metadata from the LSP probe, preserve single-file names, and honor session severity tiers.
  • Test-runner selection is per file kind and per module root, and a go [setup failed] result is advisory (refs #2870)
  • The test runner spawns its child through resolveToolCwd, so a nested module's tests run from that module (refs #2871)
  • Make the runner spawn-cwd sweep verify resolver origin across the child-spawn population (refs #2872).
  • Keep diagnostics visible for tolerant MCP severity inputs and apply one threshold across session and LSP sources, including error-only files at the warning threshold.
  • Surface a crashed pi hook handler instead of swallowing it silently (refs #2884)
  • Resolve aliased child-process bindings (closes #2888)
  • Make pi RPC session_start idempotent per reason and session ID, with a session-file fallback (refs #2890)
  • Deduplicate repeated RPC session starts (refs #2890)
  • lens_diagnostics mode=full retires a stale finding only when the result that replaces it is genuinely authoritative: an LSP write the ordering guard accepted, or a project runner that actually analysed the root this call. A runner that reported success without running — no project root, no source files, a scan that crashed before writing its report — is reported cold instead of silently deleting the finding, and a retained result that could not be reconciled is labelled stale rather than served as a current blocker (refs #2154).
  • Require Windows-only test gates to name and enter the Windows Vitest lane (refs #2536, #2784)
  • Require runtime Observability sections to name a diff record (refs #2543, #2784)
  • Make the merge-train warden label red-ci for any failing non-advisory check on the exact pull-request head (refs #2616, #2784)
  • CI failure classifier: a test timeout beside registry network failures is infra, not real (refs #2839)
  • detectFileRole recognises Go _test.go and the other table conventions (closes #2880)
  • Route helm-lint through the runner cwd resolver (closes #2882)
  • Preserve situational tool activations across pi rebuilds (refs #2889)
  • Run the installed-registry release-QA smoke with a scratch-home pip policy and keep the measured registry deterministic.
  • Diagnostic verification guidance (closes #2792).
  • Partition LSP diagnostics by server provenance (refs #2776)
  • Re-sync LSP diagnostics after Git tree changes (refs #2817)
  • Bound MCP tool results through the shared pi result seam (refs #2799, #2800)
  • Flake-shape ratchet governs support-helper waits (refs #2563, #2784)
  • Label-sync post-merge validation fails when the syncer deletes or loses any label (refs #2614)
  • Route built-in LSP roots through the tool-cwd seam and expose resolved cwd in lens_diagnostics (refs #2777)
  • Run the release-QA tool smoke from the export root (closes #2893)
  • Docs membership guard asserts list members, not counts (closes #2919).
  • Route tool configuration diagnostics through the shared note seam (refs #2800)

🙏 Thanks

Thanks to the external contributors in this release:

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.