Skip to content

v3.3.0.2 — apostrophe search returned wrong results - #59

Merged
savvides merged 1 commit into
mainfrom
release/v3.3.0.2
Aug 6, 2026
Merged

v3.3.0.2 — apostrophe search returned wrong results#59
savvides merged 1 commit into
mainfrom
release/v3.3.0.2

Conversation

@savvides

@savvides savvides commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Release commit for the two bug fixes merged out of the stale Jules PR queue (#33, #48).

The user-facing one (#33)

bin/idstack-learnings-search spliced $SOURCES/$TYPE/$KEYWORD/$LIMIT straight into Python source. Reproduced on main before merging:

$ idstack-learnings-search --keyword "Bloom's" --type technical
{"key":"blooms-note","type":"operational",...}   <- wrong type, no error

The apostrophe makes the generated Python a SyntaxError, 2>/dev/null swallows it, and execution falls through to a grep fallback that has no --type filter. So it answers wrongly rather than failing. "Bloom's" and "learner's" are ordinary search terms in this tool.

Same defect class v3.3.0.0 fixed in bin/idstack-status — that pass missed this file.

The quieter one (#48)

load_manifest had an isinstance(data, dict) guard and load_payload didn't, so a bare JSON array merged in cleanly and surfaced much later as AttributeError: 'list' object has no attribute 'get' inside idstack-status --readiness.

Verification

smoke              371/371
integration         25/25
setup               17/17
manifest-merge      23/23   (21 before #48)
version-classifier  27/27
plugin-status        9/9
preamble-python      6/6
mutation           14/14 guarded

CI had never run on either PR branch, so both were merged locally onto current main and the full suite run before landing.

🤖 Generated with Claude Code

Version, plugin manifest, CHANGELOG and landing page for the two bug fixes
merged from the May/June Jules PR queue (#33, #48).

#33 is the one that matters to users: bin/idstack-learnings-search spliced
$SOURCES/$TYPE/$KEYWORD/$LIMIT into Python source, so searching for a term
with an apostrophe raised SyntaxError, got swallowed by 2>/dev/null, and fell
through to a grep fallback with no --type filter. Reproduced on main before
merging:

  $ idstack-learnings-search --keyword "Bloom's" --type technical
  {"key":"blooms-note","type":"operational",...}   <- wrong type, no error

Same defect class v3.3.0.0 fixed in bin/idstack-status; that pass missed
this file.

#48 adds the isinstance(dict) guard load_payload lacked while load_manifest
had one, so a bare JSON array merged in and surfaced later as an
AttributeError inside idstack-status --readiness.

Verified: smoke 371/371, integration 25/25, setup 17/17, manifest-merge
23/23, version-classifier 27/27, plugin-status 9/9, preamble-python 6/6,
mutations 14/14 guarded.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@savvides
savvides merged commit 39460cd into main Aug 6, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant