fix(wiki): exclude URL-shaped bibkeys from claim parsing

_parse_claims now skips matches where bibkey contains spaces or starts
with "http", preventing Markdown hyperlinks like [text](https://...) from
being misidentified as citations. Add two tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-06-14 03:47:27 +02:00
parent 89228a1f62
commit 60e40f6f36
2 changed files with 18 additions and 0 deletions

View File

@@ -228,6 +228,10 @@ def _parse_claims(markdown: str) -> list[Claim]:
text = match.group("text").strip() text = match.group("text").strip()
bibkey = match.group("bibkey").strip() bibkey = match.group("bibkey").strip()
locator = (match.group("locator") or "").strip() locator = (match.group("locator") or "").strip()
# Skip URL-shaped bibkeys ([text](https://...)) and multi-word bibkeys
# (real BibKeys never contain spaces or start with "http")
if " " in bibkey or bibkey.startswith("http"):
continue
if text and bibkey: if text and bibkey:
claims.append(Claim(text=text, bibkey=bibkey, locator=locator)) claims.append(Claim(text=text, bibkey=bibkey, locator=locator))
return claims return claims

View File

@@ -121,6 +121,20 @@ def test_parse_claims_multiple() -> None:
assert len(claims) == 2 assert len(claims) == 2
def test_parse_claims_ignores_markdown_links() -> None:
"""Markdown hyperlinks like [text](https://example.com) are NOT parsed as claims."""
md = "See the [related work](https://example.com) for details."
claims = _parse_claims(md)
assert claims == []
def test_parse_claims_ignores_multi_word_bibkey() -> None:
"""Multi-word 'bibkeys' (spaces inside) are not treated as real citations."""
md = "Some text [not a bibkey here] and more."
claims = _parse_claims(md)
assert claims == []
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# _run_grounding_guard # _run_grounding_guard
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------