Description
The relevance-close evaluator (evaluate-relevance, invoked by /wr-itil:review-problems) has no evidence shape for a ticket whose root-cause analysis is pinned to a platform or engine version the production stack no longer runs. Its existing shapes (file-no-longer-exists, ADR-shipped-confirmed, self-marker-in-body, checkbox-completion) key on explicit file paths, ADR citations, and in-body markers. A ticket whose RCA reads "OpenSearch 1.3.20's match_bool_prefix query builder does X" cites no path and no ADR, so after the stack migrates off 1.3.20 the ticket stays Open with no verdict at all. The evaluator is silent rather than wrong.
This is the missed-positive direction of the same evaluator's precision problem. #306 covers the over-fire direction: candidates surfaced that should be kept. This report covers candidates never surfaced that should be closed.
Symptoms
- Downstream P027, whose RCA was pinned to "OpenSearch 1.3.20's
match_bool_prefix query builder", stayed Open through two engine migrations (1.3.20 to 2.19 on 2026-07-11, and the 2.19 to 3.5 cutover on 2026-07-14). The evaluator emitted no close verdict across either. It took a dedicated AFK iteration on 2026-07-19 to close it as no longer relevant.
- Downstream P028 ("OpenSearch 1.3.20 version debt") was closed by hand in the 2026-07-15 review rather than auto-flagged.
- Downstream P035 and P038, both migration-era tickets, were likewise flagged by hand in that same review.
Workaround
Manually sweep the backlog for version-pinned root-cause claims after any platform or engine migration, and close the ones the migration has made moot. In practice a maintainer re-reads every open ticket's RCA around each migration, which is the work the relevance pass exists to remove.
Affected plugin or component
@windyroad/itil: the evaluate-relevance evidence-shape set used by /wr-itil:review-problems.
Frequency
Fires around platform and engine migrations. Four tickets missed across two migrations in one downstream repo over a four-day window (2026-07-11 to 2026-07-15).
Versions
- Local plugin:
@windyroad/itil@0.59.2
- Upstream package:
@windyroad/itil@0.59.2
- Claude Code CLI: 2.1.219 (Claude Code)
- Node: v24.16.0
- OS: Darwin 25.3.0 x86_64
Evidence
Suggested fix shape. Add a version-pin detection shape to the evaluator:
- Grep the ticket's
## Description and ## Root Cause Analysis sections for version-pinned root-cause claims: a product or runtime name adjacent to a semver-ish literal (OpenSearch 1.3.20, Node 18, Elasticsearch 7.x).
- Cross-reference each extracted pin against the repo's current platform version markers:
engine_version in Terraform, engines in package.json, container image tags in compose or CI config.
- Emit
CLOSE-CANDIDATE on a mismatch, with the detected pin and the current version in the caveat so the maintainer can confirm at a glance.
Step 2 is the load-bearing part. Without a current-version source the shape would fire on every version literal in every ticket, which lands it straight in the #306 over-fire class.
Related upstream issues, same script, distinct root causes:
Additional context
The downstream repo that hit this runs a search engine whose version appears in Terraform (engine_version), so the cross-reference source in step 2 was available and unread. Adopter repos without a machine-readable platform-version marker would need the shape to degrade to a caveated verdict rather than silence.
Cross-reference
Reported from the downstream addressr project; tracked locally as P057 in its docs/problems/ directory.
Description
The relevance-close evaluator (
evaluate-relevance, invoked by/wr-itil:review-problems) has no evidence shape for a ticket whose root-cause analysis is pinned to a platform or engine version the production stack no longer runs. Its existing shapes (file-no-longer-exists,ADR-shipped-confirmed,self-marker-in-body, checkbox-completion) key on explicit file paths, ADR citations, and in-body markers. A ticket whose RCA reads "OpenSearch 1.3.20'smatch_bool_prefixquery builder does X" cites no path and no ADR, so after the stack migrates off 1.3.20 the ticket stays Open with no verdict at all. The evaluator is silent rather than wrong.This is the missed-positive direction of the same evaluator's precision problem. #306 covers the over-fire direction: candidates surfaced that should be kept. This report covers candidates never surfaced that should be closed.
Symptoms
match_bool_prefixquery builder", stayed Open through two engine migrations (1.3.20 to 2.19 on 2026-07-11, and the 2.19 to 3.5 cutover on 2026-07-14). The evaluator emitted no close verdict across either. It took a dedicated AFK iteration on 2026-07-19 to close it as no longer relevant.Workaround
Manually sweep the backlog for version-pinned root-cause claims after any platform or engine migration, and close the ones the migration has made moot. In practice a maintainer re-reads every open ticket's RCA around each migration, which is the work the relevance pass exists to remove.
Affected plugin or component
@windyroad/itil: theevaluate-relevanceevidence-shape set used by/wr-itil:review-problems.Frequency
Fires around platform and engine migrations. Four tickets missed across two migrations in one downstream repo over a four-day window (2026-07-11 to 2026-07-15).
Versions
@windyroad/itil@0.59.2@windyroad/itil@0.59.2Evidence
Suggested fix shape. Add a version-pin detection shape to the evaluator:
## Descriptionand## Root Cause Analysissections for version-pinned root-cause claims: a product or runtime name adjacent to a semver-ish literal (OpenSearch 1.3.20,Node 18,Elasticsearch 7.x).engine_versionin Terraform,enginesinpackage.json, container image tags in compose or CI config.CLOSE-CANDIDATEon a mismatch, with the detected pin and the current version in the caveat so the maintainer can confirm at a glance.Step 2 is the load-bearing part. Without a current-version source the shape would fire on every version literal in every ticket, which lands it straight in the #306 over-fire class.
Related upstream issues, same script, distinct root causes:
CLOSE-CANDIDATEon tickets that merely cite a shipped ADR. Opposite direction from this report, so a fix for one should not regress the other.file-no-longer-existsfalse-positives on upstream-plugin paths.Additional context
The downstream repo that hit this runs a search engine whose version appears in Terraform (
engine_version), so the cross-reference source in step 2 was available and unread. Adopter repos without a machine-readable platform-version marker would need the shape to degrade to a caveated verdict rather than silence.Cross-reference
Reported from the downstream addressr project; tracked locally as P057 in its
docs/problems/directory.