fix: ignore markdown emphasis when matching read answers
Some checks failed
CI / test (pull_request) Failing after 51s
Some checks failed
CI / test (pull_request) Failing after 51s
The read checker matched a task's required-fact phrasings as plain substrings of the agent's report after only lowercasing and collapsing whitespace. An answer that was substantively correct but wrapped a value in markdown (e.g. `**5**`) failed the match, because the emphasis markers broke the phrase adjacency (`**5** open` does not contain `5 open`) — a correct answer scored incorrect on formatting alone. Strip markdown emphasis/code markers (`*`, `_`, backtick) during normalization so the match is on substance, not presentation. A guard test confirms a wrong value still fails after stripping.
This commit is contained in:
@@ -253,9 +253,18 @@ export function checkReadAnswer(facts: RequiredFact[], report: string): CheckRes
|
||||
};
|
||||
}
|
||||
|
||||
/** Lower-case and collapse runs of whitespace so incidental phrasing does not matter. */
|
||||
/**
|
||||
* Lower-case, drop markdown emphasis/code markers, and collapse runs of
|
||||
* whitespace so incidental phrasing and formatting do not matter — a report that
|
||||
* bolds a value (`**5**`) matches a phrasing that does not (`5 open`), since the
|
||||
* emphasis is presentation, not substance.
|
||||
*/
|
||||
function normalizeText(text: string): string {
|
||||
return text.toLowerCase().replace(/\s+/g, " ").trim();
|
||||
return text
|
||||
.toLowerCase()
|
||||
.replace(/[*_`]/g, "")
|
||||
.replace(/\s+/g, " ")
|
||||
.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user