File size: 1,245 Bytes
acf77ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from __future__ import annotations

import re

# Match explicit citation comments: # cited: skill-name or # ref: skill-name
_CITATION_RE = re.compile(r"#\s*(?:cited|ref|source|from):\s*(\S+)", re.IGNORECASE)


def citation_shaping_bonus(
    *,
    submit_files: dict[str, str],
    prior_citations: list[dict[str, object]],
    prior_cluster_hits: list[str],
) -> float:
    """Retroactive shaping bonus for prior queries whose cited skills appear in submitted code.

    +0.01 per cited skill name found as an explicit citation comment in the code,
    max 0.05.  Only fires on submit with reward > 0.  See SYSTEM_DESIGN §4.8.4.

    Uses explicit comment matching (``# cited: skill-name``) instead of substring
    matching to prevent common-word skill names from trivially matching any code.
    """
    if not prior_citations:
        return 0.0

    cited_skills: set[str] = set()
    for c in prior_citations:
        sn = c.get("skill_name")
        if isinstance(sn, str):
            cited_skills.add(sn.lower())

    code_text = "\n".join(submit_files.values())
    code_citations = {m.group(1).lower() for m in _CITATION_RE.finditer(code_text)}

    overlap = len(cited_skills & code_citations)
    return min(overlap * 0.01, 0.05)