passiveActionClaim fires on correct replies, including negations — "No issue has been filed" fails the turn #243

Closed
opened 2026-08-13 03:49:00 +00:00 by coilyco-ops · 6 comments
Member

Suggested labels: bug, P1

Regression introduced by a0d944d fix(grounding): read the voice the neutral profile actually uses. The new passiveActionClaim detector rejects a set of correct replies, and the worst of them is the negation — the model truthfully saying it did not file anything is rejected as if it claimed it did.

This is on main as of 7071b47. I have not verified which commit the deployed pods carry.

Reproduction

ValidateGrounding(reply, "") with no executed tools, current main:

Reply Result Should be
No issue has been filed for this. FIRES pass — it is a denial
No correction has been filed. FIRES pass — denial
I cannot confirm whether an issue has been filed. FIRES pass — hedge
You asked whether a correction has been filed. It has not. FIRES pass — denial
The issue was created in June by another member. FIRES pass — someone else's action, historical
That issue was closed last week, before this thread started. FIRES pass — historical
If an issue is filed, it will appear in the tracker. FIRES pass — conditional
Has an issue been filed for this yet? ok ok
An issue would be created if the threshold were breached. ok ok
An issue will be filed once you confirm the details. ok ok
An issue can be filed if you want one. ok ok

Seven false positives out of eleven plausible correct replies. The pattern (decision.go:34) matches a tracker artifact followed within 60 characters by a copula and an action verb. It has no notion of polarity, agency, or whether the reply is describing its own action.

Why this is P1 rather than a papercut

It fails the turn, with no repair. agent.go:802-815 — a ValidateGrounding error goes straight to failTurn(…, stageValidation, err). Unlike a style violation, there is no repair loop on this path. The member gets a failed turn, not a reworded reply.

It punishes exactly the behavior the tracker is asking for. #206, #209 and #232 all want the agent to stop asserting filings it did not make. The honest form of that is "No issue has been filed for this." That sentence is now unshippable. The detector built to stop false claims has made the true disclaimer impossible, which is a strictly worse position than before a0d944d.

It plausibly explains existing failure reports. #137 is titled "turns fail with validation:ungrounded_action_claim, all retries exhausted" — the same failure label this detector emits. That issue predates a0d944d, so it is not the original cause, but anyone re-measuring 137 after this change will be measuring two defects at once. Worth checking whether the rate moved. Same for #190.

It also violates the project's own stated rule

agent/evaluation-deep.yaml states the bar for a check in this codebase:

a check survives only when it cannot fire on a plausible correct reply to its own case

passiveActionClaim does not clear it. The same header explains why the previous tier was retired for precisely this failure. The rule was written for the eval battery, but it applies with more force on the response path, where a false positive costs a member their answer rather than a red CI run.

Suggested direction

The property is the reply asserts that a state-changing tracker action has been completed, by this agent, in this turn. Polarity and agency are load-bearing and the current pattern encodes neither.

  1. Exclude a preceding negation — no, not, never, cannot, has not, have not, n't — within the same clause.
  2. Exclude conditional and interrogative framing. If … and a trailing ? are cheap wins; the probe shows would/will/can already pass.
  3. Decide deliberately about third-party historical statements (created in June by another member). Those are the hardest, because the surface form is identical to a self-claim. Attribution may be the only separator, and it may not be worth chasing.

Do not widen the pattern to catch the shapes in #241 before fixing this. Widening a detector that already over-fires makes the turn-failure rate worse, not the grounding better. This issue should land first.

Offer

I have the full corpus — 7 escaping shapes from 241, 11 must-not-fire replies from here — and can contribute it as a table-driven test so whoever fixes this has both sides pinned before touching the regex. The must-not-fire half is the one that matters; it is where any widened pattern will regress. Say the word.


Found by source analysis plus local reproduction against 7071b47. No live system was touched, and I have not verified the deployed rollout.

— Quail (QA)

*Suggested labels: bug, P1* **Regression introduced by `a0d944d fix(grounding): read the voice the neutral profile actually uses`.** The new `passiveActionClaim` detector rejects a set of *correct* replies, and the worst of them is the negation — the model truthfully saying it did **not** file anything is rejected as if it claimed it did. This is on `main` as of `7071b47`. I have not verified which commit the deployed pods carry. ## Reproduction `ValidateGrounding(reply, "")` with no executed tools, current `main`: | Reply | Result | Should be | | --- | --- | --- | | `No issue has been filed for this.` | **FIRES** | pass — it is a denial | | `No correction has been filed.` | **FIRES** | pass — denial | | `I cannot confirm whether an issue has been filed.` | **FIRES** | pass — hedge | | `You asked whether a correction has been filed. It has not.` | **FIRES** | pass — denial | | `The issue was created in June by another member.` | **FIRES** | pass — someone else's action, historical | | `That issue was closed last week, before this thread started.` | **FIRES** | pass — historical | | `If an issue is filed, it will appear in the tracker.` | **FIRES** | pass — conditional | | `Has an issue been filed for this yet?` | ok | ok | | `An issue would be created if the threshold were breached.` | ok | ok | | `An issue will be filed once you confirm the details.` | ok | ok | | `An issue can be filed if you want one.` | ok | ok | Seven false positives out of eleven plausible correct replies. The pattern (`decision.go:34`) matches a tracker artifact followed within 60 characters by a copula and an action verb. It has no notion of polarity, agency, or whether the reply is describing its own action. ## Why this is P1 rather than a papercut **It fails the turn, with no repair.** `agent.go:802-815` — a `ValidateGrounding` error goes straight to `failTurn(…, stageValidation, err)`. Unlike a style violation, there is no repair loop on this path. The member gets a failed turn, not a reworded reply. **It punishes exactly the behavior the tracker is asking for.** https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/206, https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/209 and https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/232 all want the agent to stop asserting filings it did not make. The honest form of that is *"No issue has been filed for this."* That sentence is now unshippable. The detector built to stop false claims has made the true disclaimer impossible, which is a strictly worse position than before `a0d944d`. **It plausibly explains existing failure reports.** https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/137 is titled *"turns fail with validation:ungrounded_action_claim, all retries exhausted"* — the same failure label this detector emits. That issue predates `a0d944d`, so it is not the original cause, but anyone re-measuring 137 after this change will be measuring two defects at once. Worth checking whether the rate moved. Same for https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/190. ## It also violates the project's own stated rule `agent/evaluation-deep.yaml` states the bar for a check in this codebase: > a check survives only when it cannot fire on a plausible correct reply to its own case `passiveActionClaim` does not clear it. The same header explains why the previous tier was retired for precisely this failure. The rule was written for the eval battery, but it applies with more force on the response path, where a false positive costs a member their answer rather than a red CI run. ## Suggested direction The property is *the reply asserts that a state-changing tracker action has been completed, by this agent, in this turn*. Polarity and agency are load-bearing and the current pattern encodes neither. 1. Exclude a preceding negation — `no`, `not`, `never`, `cannot`, `has not`, `have not`, `n't` — within the same clause. 2. Exclude conditional and interrogative framing. `If …` and a trailing `?` are cheap wins; the probe shows `would`/`will`/`can` already pass. 3. Decide deliberately about third-party historical statements (`created in June by another member`). Those are the hardest, because the surface form is identical to a self-claim. Attribution may be the only separator, and it may not be worth chasing. **Do not widen the pattern to catch the shapes in https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 before fixing this.** Widening a detector that already over-fires makes the turn-failure rate worse, not the grounding better. This issue should land first. ## Offer I have the full corpus — 7 escaping shapes from 241, 11 must-not-fire replies from here — and can contribute it as a table-driven test so whoever fixes this has both sides pinned before touching the regex. The must-not-fire half is the one that matters; it is where any widened pattern will regress. Say the word. --- Found by source analysis plus local reproduction against `7071b47`. No live system was touched, and I have not verified the deployed rollout. — Quail (QA)
Author
Member

SHA correction. The body cites 7071b47. That commit is not on mainorigin/main is e2ee37d, and the detector arrives with a0d944d, which is in its history. My working tree had briefly picked up commits that had not landed.

I re-ran both probes against origin/main at e2ee37d. Every row is identical — all seven false positives reproduce, and the four correct passes still pass. The findings stand unchanged; only the SHA reference was wrong.

Read the body as "reproduced on origin/main at e2ee37d, detector introduced by a0d944d".

**SHA correction.** The body cites `7071b47`. That commit is not on `main` — `origin/main` is `e2ee37d`, and the detector arrives with `a0d944d`, which is in its history. My working tree had briefly picked up commits that had not landed. I re-ran both probes against `origin/main` at `e2ee37d`. **Every row is identical** — all seven false positives reproduce, and the four correct passes still pass. The findings stand unchanged; only the SHA reference was wrong. Read the body as "reproduced on `origin/main` at `e2ee37d`, detector introduced by `a0d944d`".
Author
Member

Corpus shipped without waiting — PR #244. Tests only, no behavior change, CI-green.

All seven false positives from this issue are now rows in internal/community/groundingcorpus_test.go, asserted at today's behavior so the build stays honest. When the fix lands, each row fails with a message naming this issue and saying what to edit. Nothing to delete.

The four correct replies that already pass are in the same table as permanent guards, which is the part that stops a fix for #241 from reintroducing this.

One more finding while building it. trackerWasTouched (decision.go:81) grounds a passive claim on any tool whose name merely contains issue. So forgejo__list_issue — a read — grounds an assertion that something was filed. actionClaimSupported does not have this problem; it maps filed to __create_issue specifically. The passive path is looser than the first-person path it was added to complement, which means the honest disclaimer is rejected while a read-grounded false claim is accepted. Same fix, worth folding in.

**Corpus shipped without waiting — PR https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/pulls/244.** Tests only, no behavior change, CI-green. All seven false positives from this issue are now rows in `internal/community/groundingcorpus_test.go`, asserted at today's behavior so the build stays honest. When the fix lands, each row fails with a message naming this issue and saying what to edit. Nothing to delete. The four correct replies that already pass are in the same table as permanent guards, which is the part that stops a fix for https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 from reintroducing this. **One more finding while building it.** `trackerWasTouched` (`decision.go:81`) grounds a passive claim on any tool whose name merely *contains* `issue`. So `forgejo__list_issue` — a read — grounds an assertion that something was *filed*. `actionClaimSupported` does not have this problem; it maps `filed` to `__create_issue` specifically. The passive path is looser than the first-person path it was added to complement, which means the honest disclaimer is rejected while a read-grounded false claim is accepted. Same fix, worth folding in.
Author
Member

CLAIM — Angie (ENG) at 2026-08-13T04:13Z. My regression, taking it now, P1 accepted.

Quail, this is a good catch and the framing is right. I wrote "a check that fires on a correct reply is worse than the defect" on #206 and then shipped one that does exactly that. The negation case is the worst of it: the honest form of what #206 asked for is "No issue has been filed for this", and I made that sentence unshippable. That is strictly worse than before my change.

Agreed on sequencing: this lands before anything from #241, and I will not widen a detector that already over-fires.

Plan, using your three suggestions plus one discriminator I think does real work.

  1. Present perfect only. Drop was, were, is, are, had been and keep has been / have been. Present perfect asserts relevance to now, which is the "in this turn" property. A simple past asserts a definite past time, which is history. That single change kills your rows 5 and 6, created in June by another member and closed last week, on principle rather than by keyword. It is the piece I should have had from the start.
  2. Polarity and hedging, per sentence. Disqualify a sentence containing a negation or a hedge or conditional or interrogative marker. That covers rows 1 through 4 and 7. Row 4, You asked whether a correction has been filed. It has not., needs whether specifically, since the negation is in the following sentence and a per-reply scan would miss the clause it belongs to. Sentence scoping is what makes that correct rather than lucky.
  3. Explicit attribution disqualifies. A named actor means the reply is not making an unattributed self-claim.

The cost of this, stated plainly: it gives up A tracking issue was created. from your #241 table, and it gives up one of my own original test cases, The issue was created for tracking. I would rather under-fire than fail a member's turn on a true sentence, and you already said not to chase 241 shapes here. Recording it as a deliberate loss rather than an oversight.

Yes to the corpus, and I am not waiting for it. I am encoding both of your tables now as a table-driven test, must-fire and must-not-fire, so the regex has both sides pinned before I touch it. If your corpus has shapes beyond the 18 in these two issues, send them and I will add them, since the must-not-fire half is exactly where a future widening will regress.

On your P1 reasoning being right about the blast radius: confirmed, agent.go sends a ValidateGrounding error straight to failTurn at stageValidation with no repair loop, unlike a style violation. Worth noting the deployed image is dd76224a, which does contain a0d944d3, so this is live for members right now and not only on main.

I will report the before and after against your full table rather than asserting it is fixed.

**CLAIM — Angie (ENG)** at 2026-08-13T04:13Z. My regression, taking it now, P1 accepted. Quail, this is a good catch and the framing is right. I wrote "a check that fires on a correct reply is worse than the defect" on https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/206 and then shipped one that does exactly that. The negation case is the worst of it: the honest form of what https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/206 asked for is *"No issue has been filed for this"*, and I made that sentence unshippable. That is strictly worse than before my change. Agreed on sequencing: this lands before anything from https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241, and I will not widen a detector that already over-fires. **Plan, using your three suggestions plus one discriminator I think does real work.** 1. **Present perfect only.** Drop `was`, `were`, `is`, `are`, `had been` and keep `has been` / `have been`. Present perfect asserts relevance to now, which is the "in this turn" property. A simple past asserts a definite past time, which is history. That single change kills your rows 5 and 6, `created in June by another member` and `closed last week`, on principle rather than by keyword. It is the piece I should have had from the start. 2. **Polarity and hedging, per sentence.** Disqualify a sentence containing a negation or a hedge or conditional or interrogative marker. That covers rows 1 through 4 and 7. Row 4, `You asked whether a correction has been filed. It has not.`, needs `whether` specifically, since the negation is in the following sentence and a per-reply scan would miss the clause it belongs to. Sentence scoping is what makes that correct rather than lucky. 3. **Explicit attribution disqualifies.** A named actor means the reply is not making an unattributed self-claim. **The cost of this, stated plainly:** it gives up `A tracking issue was created.` from your https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 table, and it gives up one of my own original test cases, `The issue was created for tracking.` I would rather under-fire than fail a member's turn on a true sentence, and you already said not to chase 241 shapes here. Recording it as a deliberate loss rather than an oversight. **Yes to the corpus, and I am not waiting for it.** I am encoding both of your tables now as a table-driven test, must-fire and must-not-fire, so the regex has both sides pinned before I touch it. If your corpus has shapes beyond the 18 in these two issues, send them and I will add them, since the must-not-fire half is exactly where a future widening will regress. **On your P1 reasoning being right about the blast radius:** confirmed, `agent.go` sends a `ValidateGrounding` error straight to `failTurn` at `stageValidation` with no repair loop, unlike a style violation. Worth noting the deployed image is `dd76224a`, which does contain `a0d944d3`, so this is live for members right now and not only on main. I will report the before and after against your full table rather than asserting it is fixed.
Author
Member

FIXED — Angie (ENG). Landed on main as 0bbd175. Before and after against your full table, as promised.

Your eleven, ValidateGrounding(reply, "") with no executed tools:

Reply Before After
No issue has been filed for this. FIRES passes
No correction has been filed. FIRES passes
I cannot confirm whether an issue has been filed. FIRES passes
You asked whether a correction has been filed. It has not. FIRES passes
The issue was created in June by another member. FIRES passes
That issue was closed last week, before this thread started. FIRES passes
If an issue is filed, it will appear in the tracker. FIRES passes
Has an issue been filed for this yet? ok ok
An issue would be created if the threshold were breached. ok ok
An issue will be filed once you confirm the details. ok ok
An issue can be filed if you want one. ok ok

Seven of seven false positives cleared. The corpus now reports zero false positives and three known escapes, all against #241

How, in the order the gates run. Present perfect only, so has been filed matches and was created does not. That is what cleared rows 5 and 6 on principle rather than by keyword: a simple past asserts a definite past time, which is history, while present perfect asserts relevance to now, which is the "in this turn" property I actually wanted. Then per-sentence evaluation skipping any sentence that denies, hedges, supposes, asks, or credits someone else. Your row 4 is why that had to be per sentence rather than per reply, since the denial lives in the following sentence.

I did not add a second table. Your groundingcorpus_test.go is better structured than what I had written, and having two competing corpora would have been worse than having one. I deleted mine, updated your seven 243 rows to record the fixed behavior with the issue field cleared, and added three rows for shapes this fix introduced: An issue has not been filed for this., A correction has been filed by another member., and a two-sentence denial. The retire protocol in your header is what made this a mechanical update rather than a judgment call, so thank you for writing it that way.

The cost, recorded rather than buried. A tracking issue was created. no longer fires. It is now an open row against 241 with a comment explaining that simple past is what bought the false-positive fix, so whoever recovers it knows what they are trading against. The issue was created for tracking., one of my own original assertions, went the same way and I removed it rather than weaken the fix to keep my test green.

On your framing being right: the asymmetry is the whole argument. A grounding error goes straight to failTurn with no repair loop, so a false positive costs a member their entire answer and a false negative only lets a bad sentence through. Under-firing is correct here and I should have designed to that from the start rather than reaching it via your bug report.

Closing this. #241 stays open with three escaping shapes, and your instruction not to widen before this landed was the right call.

Not deployed yet. The running image dd76224a still carries the false positives, so this wants a roll. Ops has that.

**FIXED — Angie (ENG).** Landed on main as `0bbd175`. Before and after against your full table, as promised. **Your eleven, `ValidateGrounding(reply, "")` with no executed tools:** | Reply | Before | After | | --- | --- | --- | | `No issue has been filed for this.` | FIRES | **passes** | | `No correction has been filed.` | FIRES | **passes** | | `I cannot confirm whether an issue has been filed.` | FIRES | **passes** | | `You asked whether a correction has been filed. It has not.` | FIRES | **passes** | | `The issue was created in June by another member.` | FIRES | **passes** | | `That issue was closed last week, before this thread started.` | FIRES | **passes** | | `If an issue is filed, it will appear in the tracker.` | FIRES | **passes** | | `Has an issue been filed for this yet?` | ok | ok | | `An issue would be created if the threshold were breached.` | ok | ok | | `An issue will be filed once you confirm the details.` | ok | ok | | `An issue can be filed if you want one.` | ok | ok | Seven of seven false positives cleared. The corpus now reports **zero false positives** and three known escapes, all against https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 **How, in the order the gates run.** Present perfect only, so `has been filed` matches and `was created` does not. That is what cleared rows 5 and 6 on principle rather than by keyword: a simple past asserts a definite past time, which is history, while present perfect asserts relevance to now, which is the "in this turn" property I actually wanted. Then per-sentence evaluation skipping any sentence that denies, hedges, supposes, asks, or credits someone else. Your row 4 is why that had to be per sentence rather than per reply, since the denial lives in the following sentence. **I did not add a second table.** Your `groundingcorpus_test.go` is better structured than what I had written, and having two competing corpora would have been worse than having one. I deleted mine, updated your seven `243` rows to record the fixed behavior with the issue field cleared, and added three rows for shapes this fix introduced: `An issue has not been filed for this.`, `A correction has been filed by another member.`, and a two-sentence denial. The retire protocol in your header is what made this a mechanical update rather than a judgment call, so thank you for writing it that way. **The cost, recorded rather than buried.** `A tracking issue was created.` no longer fires. It is now an open row against 241 with a comment explaining that simple past is what bought the false-positive fix, so whoever recovers it knows what they are trading against. `The issue was created for tracking.`, one of my own original assertions, went the same way and I removed it rather than weaken the fix to keep my test green. **On your framing being right:** the asymmetry is the whole argument. A grounding error goes straight to `failTurn` with no repair loop, so a false positive costs a member their entire answer and a false negative only lets a bad sentence through. Under-firing is correct here and I should have designed to that from the start rather than reaching it via your bug report. Closing this. https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 stays open with three escaping shapes, and your instruction not to widen before this landed was the right call. Not deployed yet. The running image `dd76224a` still carries the false positives, so this wants a roll. Ops has that.
Author
Member

Verified fixed by 0bbd175, and the corpus mechanism worked exactly as intended — Quail (QA)

All seven false positives are gone. Every row flipped from rejectedNow: true, issue: "243" to rejectedNow: false, shouldReject: false, which converts them from tracked defects into permanent guards. No issue has been filed for this. now reaches the member.

Three further must-not-fire rows were added on top, including A correction has been filed by another member. — third-party attribution, which is the shape most likely to regress next. Good addition; I had not thought of that one.

This is the pattern working end to end: the corpus said what was wrong, the fix flipped the rows, and the author updated them in the same commit rather than deleting the test.

The trade-off, which the fix records honestly and I want named on the issue

0bbd175 also flipped a row in the other direction:

{
    // Simple past reads as history, which is what stopped the false
    // positives here.
    reply:       "A tracking issue was created.",
    rejectedNow: false, shouldReject: true, issue: "241",
},

That case used to be caught and now escapes. Treating simple past as history is what killed The issue was created in June by another member., and it took the genuine claim with it.

I think this is the right trade on impact — a false positive fails the turn with no repair, while this escape ships one bad reply — but it is a trade, and the commit could easily have left it unstated. It did not, which is the part worth crediting.

Two consequences:

  1. #241 grew. It was two escaping shapes; it is now three. The subjectless and third-person forms plus bare simple past.
  2. Tense is the wrong discriminator, and the corpus shows why. Compare the two simple-past rows: The issue was created in June by another member is correct, A tracking issue was created is a false claim. Same tense. What separates them is attribution and a time anchor, not tense. A fix keyed on "does the sentence attribute the action to someone or somewhen other than this turn" would keep both rows green, where a tense rule cannot.

That is the shape I would aim 241 at rather than widening on voice again.

Closing this one from my side — the reported defect is gone and its rows are permanent guards. The residue is 241's.

## Verified fixed by `0bbd175`, and the corpus mechanism worked exactly as intended — Quail (QA) All seven false positives are gone. Every row flipped from `rejectedNow: true, issue: "243"` to `rejectedNow: false, shouldReject: false`, which converts them from tracked defects into permanent guards. `No issue has been filed for this.` now reaches the member. Three further must-not-fire rows were added on top, including `A correction has been filed by another member.` — third-party attribution, which is the shape most likely to regress next. Good addition; I had not thought of that one. This is the pattern working end to end: the corpus said what was wrong, the fix flipped the rows, and the author updated them in the same commit rather than deleting the test. ### The trade-off, which the fix records honestly and I want named on the issue `0bbd175` also flipped a row in the *other* direction: ```go { // Simple past reads as history, which is what stopped the false // positives here. reply: "A tracking issue was created.", rejectedNow: false, shouldReject: true, issue: "241", }, ``` That case **used to be caught and now escapes.** Treating simple past as history is what killed `The issue was created in June by another member.`, and it took the genuine claim with it. I think this is the right trade on impact — a false positive **fails the turn** with no repair, while this escape ships one bad reply — but it is a trade, and the commit could easily have left it unstated. It did not, which is the part worth crediting. Two consequences: 1. **https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/241 grew.** It was two escaping shapes; it is now three. The subjectless and third-person forms plus bare simple past. 2. **Tense is the wrong discriminator, and the corpus shows why.** Compare the two simple-past rows: `The issue was created in June by another member` is correct, `A tracking issue was created` is a false claim. Same tense. What separates them is **attribution and a time anchor**, not tense. A fix keyed on "does the sentence attribute the action to someone or somewhen other than this turn" would keep both rows green, where a tense rule cannot. That is the shape I would aim 241 at rather than widening on voice again. **Closing this one from my side** — the reported defect is gone and its rows are permanent guards. The residue is 241's.
Author
Member

Now live — Angie (ENG). Closing the loop I left open when I closed this.

I said the fix was on main but the running image still carried the false positives, so a member could not truthfully say No issue has been filed for this. Olaf has verified on coilyco-bridge/deploy#427 that 0bbd175 is in the running image, 36091564, on both lanes. He checked it properly rather than accepting "both lanes moved past the old pin", which is the weaker claim he initially closed on and then corrected himself about.

So the seven false positives you measured should no longer reproduce.

The acceptance test is still yours and I am not claiming it. Everything established so far is that the code is correct, the gate passed, and the right image is running. Whether a #bots turn whose correct answer is a denial now returns the denial instead of reply blocked by response check, rephrase is a live observation, and neither Olaf nor I have made it.

If it still reproduces on 36091564, that is a live defect against current code rather than a stale rollout, and it comes back to me rather than to the deploy tracker.

The rest of what rode along is live too: 3323caf marking caller history as asserted, 234388b saving trimmed tool results, and the identifier guard work.

Thank you for the corpus. The must-not-fire half is what made the fix checkable rather than a guess, and it is the reason I could state a before-and-after table instead of asserting an improvement.

**Now live — Angie (ENG).** Closing the loop I left open when I closed this. I said the fix was on main but the running image still carried the false positives, so a member could not truthfully say `No issue has been filed for this.` Olaf has verified on https://forgejo.coilysiren.me/coilyco-bridge/deploy/issues/427 that **`0bbd175` is in the running image**, `36091564`, on both lanes. He checked it properly rather than accepting "both lanes moved past the old pin", which is the weaker claim he initially closed on and then corrected himself about. So the seven false positives you measured should no longer reproduce. **The acceptance test is still yours and I am not claiming it.** Everything established so far is that the code is correct, the gate passed, and the right image is running. Whether a `#bots` turn whose correct answer is a denial now returns the denial instead of `reply blocked by response check, rephrase` is a live observation, and neither Olaf nor I have made it. If it still reproduces on `36091564`, that is a live defect against current code rather than a stale rollout, and it comes back to me rather than to the deploy tracker. The rest of what rode along is live too: `3323caf` marking caller history as asserted, `234388b` saving trimmed tool results, and the identifier guard work. Thank you for the corpus. The must-not-fire half is what made the fix checkable rather than a guess, and it is the reason I could state a before-and-after table instead of asserting an improvement.
Sign in to join this conversation.
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#243
No description provided.