The benchmark grows: corrections, merges, a third lead, and a known gap - #346
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
This was referenced Sep 5, 2026
…y one Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
This was referenced Sep 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Grows the temporal benchmark from #340 (25 questions, two waves) to 36 questions over three waves, and adds the two things a person does to a ledger that documents cannot: correct a start date, and merge two spellings of one name.
What the sheet now covers
valid_to_precision = unknown— a known gap, see #345Each wave now stamps its own moment (
wave-1,wave-2,wave-3); within a wave the order is fixed — documents, deletions, corrections, merges, stamp — so a record-axis question can sit between any two human actions.--stampsre-scores an existing base without re-ingesting, which is how the numbers below were re-taken after the scorer fix.known_gap: truequestions are tallied on their own line and kept out of the headline. They pin behaviour we know is wrong so that the day it is fixed is visible; a headline that permanently carries a known number stops being read.Numbers — 2026-09-05,
dev @ d55a97e, DeepSeek-V3 + bge-m3--no-declare)The gap is the same one #341 describes, now confirmed on the wider sheet: every miss in the control is a question that needs automatic closure — the four moments of the Aurora succession and the two of the salary correction. Nothing else moves.
Two results worth naming from the declared run: merge rewind and correction rewind are both clean — #337 and #311 hold on the real ingest path, not only in their database-backed tests. And the one question that fails is the one marked as a gap: a fact that ended on an unknown date is read as still holding at every
at, because every world-axis filter testsvalid_to IS NULL. Filed as #345 with the reads that share the pattern.A scorer bug, recorded rather than smoothed over
The first version of the scorer took the names on every edge in the one-hop neighbourhood. A neighbourhood contains edges between neighbours — Li Si works for Meridian — which hold at the asked date and say nothing about the subject, so "Li Si led Aurora in 2023" was reported as a failure of the product. The server's
atfilter was right the whole time. The scorer now reads only edges touching the subject. A benchmark that reports correct behaviour as failure is worse than one that misses, which is why it is written down in the README.Verified
Three full runs against a scratch deployment (its own database, its own data directory, a real model): the declared run at 36/36, the control at 29/36, and a re-score of the declared base through
--stampsafter the scorer fix. The--chatprobe on the same base is below.The chat probe — 24 / 37, no errors
Same base, same sheet, asked through Chat. The ledger run measures the ledger; this one measures whether the agent can ask. The thirteen misses are not scattered — they fall into three piles, and the first two are each one place in the code:
as_of.entity_factstakesatonly andsearch_chunkstakes no time at all; #317 and #338 threadedas_ofthrough the store and the HTTP API and left the agent atNone. The model reaches forchanges, the one tool that touches the record axis, and runs out of rounds narrating a plan. Filed as #347fact_linenever renders a literal value. A salary isobject_valuewith noother_name, so the model is shownsalary → ? (2023-06-01 → 2024-02-20) [90%]— interval and confidence arrive, the value does not — and reports the salary as unknown. Filed as #348atFix the first two and the chat number should sit around 35 / 37, which is the number that describes the product.
One number was retracted. The first run of this probe reported 8 / 37. The parser read
.deltawhere the frame carries.text, so every reply was an empty string — and an empty string contains none of the forbidden names, which is how eightexpect: nullquestions were scored as passes. The probe now records an empty reply aserrorand keeps errors out of the tally, and an HTTP failure is recorded as such rather than as a wrong answer. The lesson is written into the README: a chat probe has to prove it received a reply before it is allowed to produce a score.🤖 Generated with Claude Code