Skip to content

v11.4.2 — DRY path-guard + EISDIR coverage + search fallback hints

Latest

Choose a tag to compare

@Ruso-0 Ruso-0 released this 20 May 00:23
· 5 commits to master since this release

Summary

Closes the user-feedback gaps from v11.4.1. Two genuine EISDIR crashes (set_plan, engram) and two UX gaps (outline silent-fail, search "no results" asymmetry) reproduced empirically against the installed v11.4.1 binary and fixed.

Why

User reported four limitations after using v11.4.1 in production:

  1. compress on a directory crashes with EISDIR
  2. Pre-existing TS1259/TS2802 errors block unrelated edits
  3. outline returns misleading "no symbols found" message on a directory
  4. search falls through to native grep when it returns no results

Empirical investigation against the installed binary classified each:

  • (1) and (2) → already fixed in v11.4.0/v11.4.1, the user's reports were retrospective.
  • (3) → UX silent-fail bug (the EISDIR was being absorbed by getFileSymbols's internal try/catch, producing an unhelpful message).
  • Two new bugs surfaced during the audit that the user hadn't named yet: set_plan and engram with a directory path genuinely crash in v11.4.1.

See docs/user-feedback-v11.4.1-investigation.md for the per-claim empirical write-up.

What's fixed

Genuine bugs in v11.4.1

  • nreki_guard action:"set_plan" text:"<dir>" no longer throws EISDIR. Returns structured error pointing to "pass the path to your plan file, e.g. set_plan text:\"PLAN.md\"".
  • nreki_guard action:"engram" path:"<dir>" same fix.

UX in v11.4.1

  • nreki_navigate action:"outline" path:"<dir>" returns "outline operates on a single file. For directory-wide discovery, use search / fast_grep / hybrid_search" instead of the misleading "no symbols found".
  • nreki_navigate action:"search" "No semantic results found" response now lists fallbacks (fast_grep, hybrid_search with the user's query pre-filled, broaden-query, Bash grep as last resort). Symmetric with the existing "Index pending" branch.

Internals

  • New helper src/utils/path-guard.tsvalidatePath() returns {ok, kind, error, hint} for six failure modes (missing, directory, fifo, device, symlink loop, other). Hint text branches on toolName so each handler suggests the right alternative tool.
  • handleRead and handleCompress refactored to use the helper (DRY win, no behavior change vs v11.4.0).
  • handleSetPlan, handleEngram, handleOutline now call the helper at handler entry.

Honest process disclosure

v11.4.0's EISDIR fix should have audited every readSource callsite. It audited only the two it touched. v11.4.2 audited all of them and applies the guard via the new DRY helper. The v11.4.0 sprint Furia review (docs/furia-v11.4.0-review.md §Q5) had already logged FIFO/device-file handling as a residual gap; v11.4.2 closes it too.

Tests

1 441 passed / 4 skipped (3 pre-existing + 1 POSIX FIFO) / 0 failed. +14 vs v11.4.1.

New test files:

  • tests/path-guard.test.ts — 6 unit tests + 1 POSIX-only FIFO test.
  • tests/handlers-eisdir-coverage.test.ts — 5 router-level regression tests.
  • tests/search-no-results-hint.test.ts — 2 search UX tests.

Migration

No API change, no behavioral change vs v11.4.1 on valid file paths. Users who pass directory paths to set_plan, engram, or outline now see a clean error instead of a crash / misleading message.

🤖 Generated with Claude Code