Skip to content

The quote comes first - #748

Merged
WaylandYang merged 3 commits into
devfrom
feat/the-quote-comes-first
Sep 17, 2026
Merged

WaylandYang merged 3 commits into
devfrom
feat/the-quote-comes-first

Conversation

@WaylandYang

Copy link
Copy Markdown
Contributor

Pitfall 9 of docs/design/prior-work.md: the contract's shape has a cost, and quoting before stating improves grounding (Huang et al. 2024). Also closes out pitfalls 3 and 5 by measurement.

What lands

The quote comes first. A statement in s is now [quote, subject, phrase, object, value, qualifiers, when, ended]: the model copies the sentence of the passage before it writes the statement from it. The parser reads the new order; nothing downstream changes, because the server addresses the fields by name. The n entries keep their quote last. The prompt is 160 characters longer; the cost per call is unchanged.

Figures are counted before a second pass is built. scripts/bench/figures.mjs --kb <id> is a structural count: every money, percentage, unit-bearing or comma-grouped figure a chunk states, checked against the object, value, qualifiers and time words of every statement of that chunk; table rows and prose are counted apart, years are not figures. On the runs in the e2e base, with reasoning on at the endpoint:

corpus prose figures no statement carries in tables
25-document batch (FDA, statistics bulletin, NVDA, trade-in notice), #743 binary 2 of 83 (pre-#744 tables, not comparable)
four NVDA releases, #745 run 2 of 35 0 of 451
four NVDA releases, this change 0 of 35 7 of 451

The prose misses are one sentence comparing twice ("up 18% from the previous quarter and up 117% from a year ago"; "reduced ... by 27% ..., compared to a 10%"). A second-look pass over dropped figures (pitfall 5) is not worth a call per chunk at this rate; the page records the count and the script, and the pass waits for a corpus that loses more. Pitfall 3 (one statement is one complete proposition) has been the contract since #743 and is marked so.

Measured

Same four NVDA documents, reasoning on at the endpoint, the same fast judge (thinking off), against the #745 run:

four documents #745 this change
statements 901 909
misworded 5.0% 5.0%
not stated 0.3% 0.1%
reads alone = false 5.2% 4.8%
prose (410 / 435): misworded 8.8% 6.0%
prose: reads alone = false 11.0% 5.3%
table rows (491 / 474): misworded 1.8% 4.0%
drops: quote_not_in_chunk / time_not_in_quote 15 / 17 14 / 5

The table-row difference is two chunks, and neither is the order's doing. Fifteen of the nineteen faulted rows are one footnote table whose caption is a sentence ("(A) Acquisition-related and other costs are comprised of ..."); this run wrote its rows about the caption's thing with the row label as phrase, the #745 run wrote them about the company with the caption's thing as phrase and lost the row label. Asked directly about that chunk, twice under each order with the same opening and known list, the model wrote the same rows all four times, with their periods. The other twenty are cash-flow rows that both runs wrote identically ("provided by operating activities › Stock-based compensation expense") and the judge marked reads-alone false only this time. A new signal, object_undeclared ×16, is the proxy-vote table of one 8-K whose counts the model put in the object slot; the server keeps them as values.

Not in this change

Clause-level quotes measured against minimal ones (the rest of pitfall 9); the judge's misworded split into extrapolated and contradicted (pitfall 8); a run-to-run stability number, which the footnote table above asks for.

🤖 Generated with Claude Code

WaylandYang and others added 3 commits September 18, 2026 01:00
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
@WaylandYang
WaylandYang force-pushed the feat/the-quote-comes-first branch from a67fde1 to f36dc19 Compare September 17, 2026 17:00
@WaylandYang
WaylandYang merged commit da0e124 into dev Sep 17, 2026
4 checks passed
@WaylandYang
WaylandYang deleted the feat/the-quote-comes-first branch September 17, 2026 17:07
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.

1 participant