Skip to content

discover-shed-tool: normalize tool-id-shaped queries before declaring miss#321

Merged
jmchilton merged 1 commit into
pin-gxwf-cli-versionfrom
discover-shed-tool-query-normalization
Jun 18, 2026
Merged

discover-shed-tool: normalize tool-id-shaped queries before declaring miss#321
jmchilton merged 1 commit into
pin-gxwf-cli-versionfrom
discover-shed-tool-query-normalization

Conversation

@jmchilton

Copy link
Copy Markdown
Member

Stacked on #320 (base = pin-gxwf-cli-version) because the re-cast bundle's Required Tools block carries that PR's gxwf 1.7.2 pin. Retarget to main once #320 merges. Review the discover-shed-tool diff in isolation here.

Problem

A tool-id token — what a template _plan_context candidate hands the per-step loop's discover step — does not lexically match in the Tool Shed index:

  • gxwf tool-search integron_finderNo hits
  • gxwf tool-search "integron finder"34.60, resolves to the real iuc/integron_finder (changeset 5429646e486d, 2.0.5+galaxy1)

So a discover-shed-tool run that feeds the raw underscored/owner-prefixed token into tool-search emits a false miss and wrongly fall-throughs to author-galaxy-tool-wrapper — authoring a wrapper for a tool that already exists. The miss passes every static check. ISEScan masked the class of bug because its bare token (isescan) happens to score.

Fix

  • index.md §1 (Search): normalize a tool-id-shaped need before searching — strip owner/ prefix, split _/- into words, try the human name and the bare significant word; a miss is only honest after the variants are tried. Strengthened the caveats bullet with the concrete failure mode.
  • eval.md: new property "a miss survives query-variant normalization" — a miss an obvious name-variant would have turned into a hit is a failure (closes the false-miss loophole).
  • Re-cast the Claude bundle (verify clean: 5 refs, no drift). Validator: 0 errors.
  • Refinement journals: discover-shed-tool (the applied fix) and advance-galaxy-draft-step (the test-pipeline finding; the upstream question of whether the template should write a human tool name into _plan_context stays open).

Surfaced by a /test-pipeline interview-to-galaxy re-run on the UC1 MRSA case.

🤖 Generated with Claude Code

… miss

A tool-id token (`integron_finder`, `iuc/integron_finder`) — what a template
`_plan_context` candidate hands the discover step — scores zero in `tool-search`
while the human name (`integron finder`) hits the real `iuc/integron_finder`
wrapper. Without normalization the loop emits a false `miss` and wrongly
fall-throughs to authoring a tool that already exists.

- index.md §1: strip `owner/`, split `_`/`-` into words, try human name + bare
  word; `miss` only honest after variants tried. Strengthen the caveat.
- eval.md: add property "a miss survives query-variant normalization".
- re-cast claude bundle (verify clean).
- refinement journals: discover-shed-tool (applied fix) + advance-galaxy-draft-step
  (the test-pipeline finding; upstream _plan_context-hint question stays open).

Surfaced by /test-pipeline interview-to-galaxy UC1 MRSA re-run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jmchilton jmchilton merged commit 875b726 into pin-gxwf-cli-version Jun 18, 2026
1 check 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