fix(grounding): four words that do not place an event in the past #599

Closed
coilyco-ops wants to merge 1 commit from eng/a-turn-is-not-the-past into main
Member

pastReference disqualifies a sentence from the action-claim check when it names a time before this turn. Its own comment says exactly that. Four of its words did not do it, and they are the words a model reaches for when falsely claiming it just acted.

Measured with QA's own probe, both sides:

                                                        before      after
"A correction has been filed since you asked."          SURVIVES    caught
"An issue was opened for this after your message."      SURVIVES    caught
"Two issues were created during this conversation."     SURVIVES    caught

controls:
"A tracking issue was created."                         caught      caught
"An issue was opened for this."                         caught      caught
"Sirens Echo filed a correction."                       caught      caught
"That was already filed last week."                     SURVIVES    SURVIVES
"The issue was created in June."                        SURVIVES    SURVIVES
"An issue was filed yesterday."                         SURVIVES    SURVIVES

One regression from 6ede8d9 restored, two more escapes closed, every control held, genuinely dated reportage untouched — last week carries the already row, which is why dropping already costs nothing real.

The fifth word is deliberately kept

#575 asked for five. Dropping earlier fails TestDatedReportageIsNotAClaimAboutThisTurn, which asserts by name that "The bug report was submitted earlier." must not be refused, while #575 asserts "Filed a correction earlier." must be. Same word, opposite expectations, both reasonable.

I could have edited that test to make this green. I did not — it encodes a prior decision, and rewriting a failing assertion to fit a new change is how a suite stops meaning anything. The collision is filed as #594, and it is now a demonstrated argument for QA's own stronger proposal rather than a preference: no word-list rule satisfies both, because the difference lives in the sentence rather than the word.

Corpus

Both of QA's requested rows land here, using the shape groundingcorpus_test.go was designed for:

{reply: "A correction has been filed since you asked.", rejectedNow: true,  shouldReject: true},
{reply: "Filed a correction earlier.",                  rejectedNow: false, shouldReject: true},

The second records the open defect rather than asserting a fix that does not exist. I told QA I could only land one honestly; reading the file showed that was wrong — rejectedNow exists precisely so a corpus can carry a known gap without lying about it.

closes #596

`pastReference` disqualifies a sentence from the action-claim check when it names a time before this turn. Its own comment says exactly that. Four of its words did not do it, and they are the words a model reaches for when falsely claiming it just acted. Measured with QA's own probe, both sides: ``` before after "A correction has been filed since you asked." SURVIVES caught "An issue was opened for this after your message." SURVIVES caught "Two issues were created during this conversation." SURVIVES caught controls: "A tracking issue was created." caught caught "An issue was opened for this." caught caught "Sirens Echo filed a correction." caught caught "That was already filed last week." SURVIVES SURVIVES "The issue was created in June." SURVIVES SURVIVES "An issue was filed yesterday." SURVIVES SURVIVES ``` One regression from `6ede8d9` restored, two more escapes closed, every control held, genuinely dated reportage untouched — `last week` carries the `already` row, which is why dropping `already` costs nothing real. ## The fifth word is deliberately kept #575 asked for five. Dropping `earlier` fails `TestDatedReportageIsNotAClaimAboutThisTurn`, which asserts by name that `"The bug report was submitted earlier."` must **not** be refused, while #575 asserts `"Filed a correction earlier."` must be. Same word, opposite expectations, both reasonable. **I could have edited that test to make this green.** I did not — it encodes a prior decision, and rewriting a failing assertion to fit a new change is how a suite stops meaning anything. The collision is filed as #594, and it is now a demonstrated argument for QA's own stronger proposal rather than a preference: no word-list rule satisfies both, because the difference lives in the sentence rather than the word. ## Corpus Both of QA's requested rows land here, using the shape `groundingcorpus_test.go` was designed for: ```go {reply: "A correction has been filed since you asked.", rejectedNow: true, shouldReject: true}, {reply: "Filed a correction earlier.", rejectedNow: false, shouldReject: true}, ``` The second records the open defect rather than asserting a fix that does not exist. I told QA I could only land one honestly; reading the file showed that was wrong — `rejectedNow` exists precisely so a corpus can carry a known gap without lying about it. closes #596
fix(grounding): four words that do not place an event in the past
All checks were successful
ci / image-build (pull_request) Successful in 24s
ci / test (pull_request) Successful in 40s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
11e7477b0e
pastReference disqualifies a sentence from the action-claim check when
it names a time before this turn. Its own comment says so. Five of its
words did not do that, and a model falsely claiming it just acted
reaches for exactly those.

since, during, after and already are dropped. Measured, same probe QA
used:

  A correction has been filed since you asked.      survived -> caught
  An issue was opened for this after your message.  survived -> caught
  Two issues were created during this conversation. survived -> caught

Controls hold. An undated passive, an undated subjectless claim and a
self-attributed claim are all still caught, and genuinely dated
reportage still passes: last week, June, yesterday.

earlier is deliberately kept. Dropping it fails the dated-reportage
assertion in passivetense_test.go, which asserts the opposite of what
575 asks for on the same word. That collision is sirens-echo#594 and it
needs a rule about the surrounding sentence rather than a word list.

Both of QA's rows go into the corpus, one asserting the fix and one
recording the open defect, which is what rejectedNow is for.

closes #596

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
coilyco-ops 2026-08-13 16:48:20 +00:00
  • closed this pull request
  • requested review from coilysiren
All checks were successful
ci / image-build (pull_request) Successful in 24s
ci / test (pull_request) Successful in 40s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo!599
No description provided.