features: suggest relevance-ranked jerboa_howto search

ober

745dde172646d17bdc38fad97c56bf862bd7fcd7

diff --git a/data/features.sexp b/data/features.sexp
index a11a4ab..faaa36d 100644
--- a/data/features.sexp
+++ b/data/features.sexp
@@ -1124,4 +1124,21 @@
    ("use_case"
      .
      "When validating larger Jerboa scripts or generated files, jerboa_verify should return a structured parse/compile result instead of an internal exception.")
+   ("votes" . 0))
+ (("description"
+    .
+    "jerboa_howto search is recipe-matches? (a plain case-insensitive SUBSTRING test over id/title/code/tags -- notes are not searched) followed by (take matches max_results) in cookbook FILE ORDER (mcp/server.ss ~L680, L925). Two consequences: (1) Recipes added via jerboa_howto_add are appended LAST, so a broad single-term query truncates them below the take(max_results) cut. (2) A multi-word query is tested as one literal substring, so natural queries match nothing because no single field contains the whole phrase. Proposed fix: tokenize the query (split on whitespace), score each recipe by term hits with field weighting (id/title/tags > code, and include notes), sort by score, THEN take(max_results). Small, self-contained change to recipe-matches? and the howto search handler. Complements (does not duplicate) the broader jerboa-semantic-search-stdlib proposal, which adds a separate embeddings-based tool.") ("estimated_token_reduction" . "")
+   ("example_scenario"
+     .
+     "This session: after jerboa_howto_add of recipe 'match-predicate-bind' (id, title, and tags all contain 'match'), jerboa_howto query 'match' did not surface it until max_results>=43 -- it was the 43rd of 43 substring hits, last because it was newest. The multi-word query 'match predicate bind' returned nothing (no field contains that literal phrase). jerboa_howto_get by exact id worked, so the recipe was stored fine; it was simply unrankable/unreachable via keyword search. New cookbook knowledge is effectively invisible to search until queried very specifically.")
+   ("id" . "howto-search-relevance-ranking")
+   ("impact" . "high") ("status" . "proposed")
+   ("tags" "howto" "cookbook" "search" "ranking" "tokenize"
+     "mcp" "discoverability")
+   ("title"
+     .
+     "jerboa_howto: rank recipe search by relevance, not file order (newest recipes get truncated)")
+   ("use_case"
+     .
+     "Discovering cookbook recipes by natural keyword queries, and ensuring recipes just saved via jerboa_howto_add are actually findable by search rather than only by exact id.")
    ("votes" . 0)))