fix(grounding): an undated simple-past passive is a claim, a dated one is not #562

Closed
coilyco-ops wants to merge 2 commits from fix/an-undated-passive-is-a-claim into main
Member

closes #555

Family 2 is filed as #559 with the question it contains, so this closes #555 on the two families that are defects with no decision attached.

Measured by Quail (QA). Family 3, the one they proved was not a one-line change.

What survived, and why the obvious fix did not work

passiveActionClaim required has|have been. Four shapes walked through:

"A tracking issue was created."          "An issue was opened for this."
"The correction was filed for review."   "Two issues were created."

QA ran the naive fix — adding was|were — and it false-fires:

FALSE FIRE  "The issue was created in June, before the wipe."

That warning was right, and it is why the alternation is not the whole change.

The design, and the direction of the risk

The check asks whether this turn wrote to the tracker. A sentence placing the event before this turn is reportage and out of scope by construction rather than by leniency — so a past reference disqualifies the sentence the same way a denial already does, scoped to that sentence for the same reason polarity is.

I let the asymmetry pick the design: a refusal on a correct reply is worse than a miss on a wrong one. A member told their true sentence is a lie gets no explanation and no recourse. So the bar was not "catches the four shapes" but "catches them and provably does not fire on reportage", and I said before starting that I would report the family unfixable rather than ship a narrower pattern that looked like it worked.

It did not come to that. Ten reportage shapes pass:

the measured false fire · a named month · a year · yesterday · last week · an interval · before an event · previously · since · earlier

And one test proves the exemption does not leak: "The wipe happened in June. A tracking issue was created." is still refused.

Three characterization tests flip

Each told its own reader what to do when the defect it pinned was fixed — groundingcorpus_test.go even names the field to set. That is the tests working, and it is why I could make this change confidently rather than carefully.

TestGroundingStillMissesTwoShapes now misses one, and A tracking issue was created. moves into the must-stay-caught list beside it.

ward exec gate green.

closes #555 Family 2 is filed as #559 with the question it contains, so this closes #555 on the two families that are defects with no decision attached. **Measured by Quail (QA).** Family 3, the one they proved was not a one-line change. ## What survived, and why the obvious fix did not work `passiveActionClaim` required `has|have been`. Four shapes walked through: ``` "A tracking issue was created." "An issue was opened for this." "The correction was filed for review." "Two issues were created." ``` QA ran the naive fix — adding `was|were` — and it false-fires: ``` FALSE FIRE "The issue was created in June, before the wipe." ``` That warning was right, and it is why the alternation is not the whole change. ## The design, and the direction of the risk The check asks whether **this turn** wrote to the tracker. A sentence placing the event before this turn is reportage and out of scope **by construction rather than by leniency** — so a past reference disqualifies the sentence the same way a denial already does, scoped to that sentence for the same reason polarity is. I let the asymmetry pick the design: **a refusal on a correct reply is worse than a miss on a wrong one.** A member told their true sentence is a lie gets no explanation and no recourse. So the bar was not "catches the four shapes" but "catches them and provably does not fire on reportage", and I said before starting that I would report the family unfixable rather than ship a narrower pattern that looked like it worked. It did not come to that. Ten reportage shapes pass: > the measured false fire · a named month · a year · yesterday · last week · an interval · before an event · previously · since · earlier And one test proves the exemption does not leak: `"The wipe happened in June. A tracking issue was created."` is still refused. ## Three characterization tests flip Each told its own reader what to do when the defect it pinned was fixed — `groundingcorpus_test.go` even names the field to set. That is the tests working, and it is why I could make this change confidently rather than carefully. `TestGroundingStillMissesTwoShapes` now misses one, and `A tracking issue was created.` moves into the must-stay-caught list beside it. `ward exec gate` green.
fix(grounding): a named self-claim in the simple past is still a claim
All checks were successful
ci / image-build (pull_request) Successful in 21s
ci / test (pull_request) Successful in 36s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
7129797afb
The check built specifically for a reply naming this service as the actor
required the perfect. Sirens Echo has filed a correction was caught. Sirens
Echo filed a correction was not, and simple past is at least as natural a thing
for a model to write.

Two characters, and the guard the suite presents as covering that shape did not
cover its own case.

QA measured twelve surviving shapes across four families. This is family one
only, taken first for their reason rather than a different one: it does not
touch passiveActionClaim, so it cannot regress the issue-was-created-in-June
false fire that families three and four run into.

The tests hold both directions, because a widening that starts reading ordinary
prose as a claim would be a worse defect than the one it fixed. A capability
statement, a refusal, a name in isolation, a comma between the name and the
verb, and someone else acting all stay permitted.

The pipeline characterization test is renamed. It measures two shapes and its
name asserted that only one survived the whole path, which was true of its own
corpus and not of the check.

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
fix(grounding): an undated simple-past passive is a claim, a dated one is not
All checks were successful
ci / test (pull_request) Successful in 31s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Successful in 20s
b9b49a56c6
passiveActionClaim required has or have been, so four shapes walked through it:
a tracking issue was created, an issue was opened for this, the correction was
filed for review, two issues were created.

QA measured that adding was or were alone false-fires on the issue was created
in June, before the wipe, and reddens five tests. That warning was right, and it
is why the alternation is not the whole change.

The check asks whether this turn wrote to the tracker. A sentence that places
the event before this turn is reportage and out of scope by construction rather
than by leniency, so a past reference disqualifies the sentence the same way a
denial already does, and scoped to that sentence for the same reason.

The direction of the risk decided the design. A refusal on a correct reply is
worse than a miss on a wrong one, because a member told their true sentence is
a lie gets no explanation. Ten reportage shapes are pinned against that, and
one test proves a dated sentence does not excuse an undated claim beside it.

Three characterization tests flip here, each one telling its own reader what to
do when the defect it pinned was fixed. That is the tests working.

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

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!562
No description provided.