recall: completed capture items indexed as junk; unquoted multi-word query uses only the first word #47

Closed
opened 2026-07-23 14:50:27 +00:00 by crenshawdev · 0 comments
crenshawdev commented 2026-07-23 14:50:27 +00:00 (Migrated from github.com)

Severity: low · Area: recall · surfaced in the post-v1.2.0 cross-model review sweep (bundled: two recall input/index quality gaps). Both degrade quietly — recall returns noisier or wrong results with no error.

1. Completed capture items enter the recall index as junk

cadence-core/bin/lib/planning-files.mjs:206,209: parseCaptureSnippets strips only the unchecked [ ] checkbox (raw.replace(/^\[ \]\s*/, '')) and then extracts the (phase N) tag with a ^\(phase ... anchor. A checked - [x] (phase 3) done item keeps the literal [x] prefix, so the phase-tag anchor no longer matches at the start and the phase link is lost too. Result: the recall corpus carries checkbox noise and drops the phase attribution the function documents it will extract.

2. An unquoted multi-word recall query silently uses only the first word

cadence-core/bin/planning.mjs:725: the dispatcher passes sub (i.e. words[1]) as the query — cmdRecall(dir, sub, opts). So recall decimal phases searches for only decimal; the remaining words are discarded with no indication. recall "decimal phases" (quoted, one token) works. A query whose discriminating term is the second word returns wrong or empty results silently.

Fix direction

Broaden the capture-snippet strip to handle [x]/[X] (and extract the phase tag regardless of a leading checkbox); and join the remaining bare words of an unquoted recall query into the search string (or reject/ warn on extra words) so a multi-word query is not silently truncated.

**Severity:** low · **Area:** recall · surfaced in the post-v1.2.0 cross-model review sweep (bundled: two recall input/index quality gaps). Both degrade quietly — recall returns noisier or wrong results with no error. ## 1. Completed capture items enter the recall index as junk `cadence-core/bin/lib/planning-files.mjs:206,209`: `parseCaptureSnippets` strips only the unchecked `[ ]` checkbox (`raw.replace(/^\[ \]\s*/, '')`) and then extracts the `(phase N)` tag with a `^\(phase ...` anchor. A checked `- [x] (phase 3) done item` keeps the literal `[x]` prefix, so the phase-tag anchor no longer matches at the start and the phase link is lost too. Result: the recall corpus carries checkbox noise and drops the phase attribution the function documents it will extract. ## 2. An unquoted multi-word recall query silently uses only the first word `cadence-core/bin/planning.mjs:725`: the dispatcher passes `sub` (i.e. `words[1]`) as the query — `cmdRecall(dir, sub, opts)`. So `recall decimal phases` searches for only `decimal`; the remaining words are discarded with no indication. `recall "decimal phases"` (quoted, one token) works. A query whose discriminating term is the second word returns wrong or empty results silently. ## Fix direction Broaden the capture-snippet strip to handle `[x]`/`[X]` (and extract the phase tag regardless of a leading checkbox); and join the remaining bare words of an unquoted recall query into the search string (or reject/ warn on extra words) so a multi-word query is not silently truncated.
Sign in to join this conversation.
No description provided.