fix(docs): stop the node validator eating underscores in identifiers - #1973
Conversation
`table_col` stripped `[*_`]` from every table cell to remove markdown decoration before comparing names against services*.json. Underscores are markdown emphasis, but they are also legal in the identifiers this function exists to compare, so the strip silently corrupted them: `_source` became `source` and no longer matched the lane that declared it. Caught on tool_pipe, whose README was correct and failed anyway. Thirteen nodes carry an underscore in a lane, connection, or profile name, and the LLM family is the worst affected — `gemini-2_5-flash`, `llama3_2-vision-11b`, `ai21_jamba-1_5-large` — so this would have produced a wave of false failures on the largest batch still to come. Profiles masked the bug because their comparison falls back to fuzzy containment across two columns; lanes and connections compare strictly, so they failed outright. Emphasis is now only removed when a pair of underscores wraps the whole cell, which is the only case where an underscore is decoration rather than part of a name. Verified against `_source`, `z_score`, `gemini-2_5-flash`, `streamable_http`, `_emphasised_`, and both the `*(default)*` and `_(default)_` markers already in use. No change to the corpus pass count.
🤖 Internal: Discord sync markerAuto-managed by the Discord notification workflow. Stores the linked Discord message ID and forum thread ID. Do not edit or delete. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe README validator now centralizes Markdown table-cell cleanup. It removes Markdown formatting markers and standalone ChangesREADME validation
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This localized validator fix preserves underscores in identifiers while continuing to remove markdown decoration, preventing false documentation validation failures. No actionable merge-blocking risk remains beyond normal checks. Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
One-function fix, kept separate from the batch PRs so it can be reviewed as code.
The bug
table_colstripped[*_`]from every table cell to remove markdown decoration before comparing names againstservices*.json.Underscores are markdown emphasis — but they are also legal characters in the identifiers that function exists to compare. So the strip silently corrupted them. A README documenting lane
`_source`had it reduced tosource, which then failed to match the lane that declared it.How it surfaced
tool_pipefailed with:Its README lists
_sourcecorrectly. The README was right; the validator was wrong.Why it matters beyond one node
Thirteen nodes carry an underscore in a lane, connection, or profile name. The LLM family is worst affected, and it is the largest batch still ahead:
llm_geminigemini-3_1-pro-preview,gemini-3_1-flash-image-previewllm_ollamallama3_3,llama3_1-8b,llama3_1-70bllm_bedrockai21_jamba-1_5-large,amazon_titan-text-expressllm_vision_ollamallama3_2-vision-11b,qwen2_5vl-3banomaly_detectorz_score,rolling_avgcore,telegram,tool_pipe_sourceLeft unfixed this would have produced a wave of false failures right as the check became blocking.
Profiles partly masked it: their comparison falls back to fuzzy containment across two columns, so a corrupted name often still matched something. Lanes and connections compare strictly, so they failed outright — which is why this showed up on a lane first.
The fix
Emphasis is only stripped when a pair of underscores wraps the entire cell, which is the only case where an underscore is decoration rather than part of a name. Backticks and asterisks are still removed unconditionally.
Verification
`_source`_source*`z_score`*z_score`gemini-2_5-flash`gemini-2_5-flash`streamable_http`streamable_httpClaude Sonnet 4.6 _(default)_Claude Sonnet 4.6**Weaviate cloud** *(default)*Weaviate cloud_emphasised_emphasisedBoth
*(default)*and_(default)_markers are already in use in migrated READMEs; both still parse. Corpus pass count unchanged, andtool_pipegoes from FAIL to PASS with no edit to its README.🤖 Generated with Claude Code
Summary by CodeRabbit
_source,gemini-2_5-flash, andstreamable_http.