Skip to content

The temporal bench's chat check scores the name the question asks for - #997

Merged
WaylandYang merged 2 commits into
deeplethe:devfrom
Maya-Kid:fix/temporal-chat-check-scores-the-asked-name
Sep 29, 2026
Merged

WaylandYang merged 2 commits into
deeplethe:devfrom
Maya-Kid:fix/temporal-chat-check-scores-the-asked-name

Conversation

@Maya-Kid

Copy link
Copy Markdown
Contributor

Raised in the #986 review. The chat check counts any name in not as a wrong answer. An answer that names the right lead and then says who took over is therefore scored as wrong.

Problem

  • chatVerdict in scripts/bench/temporal.mjs passes an answer only when expect appears and no name in not appears anywhere in it.
  • Since An end the timeline derived cites the fact that closed the row, and a corrected date says which end a person changed #986, graph lines say who closed a row (superseded by X [m]), and the model repeats it: "Li Si led Project Aurora in August 2024 — their tenure as lead ran from 2024-07-05 until 2025-09-01, when Zhou Qi took over [3][2]." That answer is right, yet it is scored as wrong.
  • Answers about a salary before a correction do the same with the later value: "the recorded salary for Lin Zhao was 28,000 CNY from 2023-06-01 … The correction in lin-zhao-correction.md records 32,000 CNY from 2024-02-20".

Change

  • A question with an expect passes when expect appears and no name in not appears before it. When two candidates start at the same place, the longer one counts.
  • A question with expect: null is scored as before: any name in not fails it. There is no order to compare, and a negated sentence still fails, as the README already records.
  • The README's scoring section says the same, including what substring scoring still cannot tell apart: an answer that names the right person first and then says something wrong about another still passes. It also notes that the chat numbers further down were scored with the earlier rule.
  • The ledger check is unchanged. There, a name in not among the facts held at that moment is a wrong answer.

Verification

No model call is needed. The four chat runs measured for #986 (dev twice, then the branch twice) kept every reply in their reports. I re-scored them with chatVerdict taken verbatim from each version of temporal.mjs. The counts follow the report's own rules: known gaps and errors are kept apart, and none of these runs had either.

dev 1 dev 2 branch 1 branch 2
Recorded in the report 23/37 24/37 19/37 18/37
Re-scored with dev's rule 23 24 19 18
Re-scored with this rule 25 27 25 26
  • The drop in An end the timeline derived cites the fact that closed the row, and a corrected date says which end a person changed #986's chat numbers disappears; the spread between runs remains.
  • All 19 changed verdicts go from fail to pass, and I read each answer.
    • 18 are right answers that also name the lead before or after, or the corrected salary as a later change. Examples:
      • aurora-lead-2024-08, quoted above;
      • lin-zhao-salary-record-wave1;
      • helios-lead-record-wave2: "recorded as led by L. Si (Li Si) … the same person is later recorded under the name Li Si".
    • One now passes that I would not count as right: aurora-lead-record-wave2-at-2025-10 in the second branch run. It names Li Si, but also says Zhou Qi's start was already on record before the third lead arrived.
  • Hand-written cases:
    • a successor named after the answer passes;
    • a successor named first fails;
    • "Zhang San or Li Si" fails when the answer is Li Si;
    • with expect: null, a name in not fails;
    • "L. Si (Li Si)" passes when the answer is L. Si;
    • 28,000 followed by 32,000 passes when the answer is 28000.
  • node --check scripts/bench/temporal.mjs passes. CI does not run the bench scripts.

Signed-off-by: dada-yan <BinjunYann@gmail.com>

@WaylandYang WaylandYang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. Thanks @Maya-Kid.

Reviewed at 557aa6e. The rule is right: what the question asks for has to appear, and a name in not only fails the answer when it comes first. I walked the substring cases (28000 inside 128000, an expect that contains a not name, two that start at the same place) and each lands where it should. Re-scoring the four kept runs without a model call was a good way to show it, and reading all 19 changed verdicts is what makes the numbers usable.

The limits are stated where a reader will find them, and the README says the older chat numbers used the earlier rule. Nothing to change.

@WaylandYang
WaylandYang merged commit 5724a04 into deeplethe:dev Sep 29, 2026
@Maya-Kid
Maya-Kid deleted the fix/temporal-chat-check-scores-the-asked-name branch September 29, 2026 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants