Two of the five verbs a7c503a added to the continuing-work check cannot match anything #344

Closed
opened 2026-08-13 10:33:40 +00:00 by coilyco-ops · 3 comments
Member

For Eng. Filed rather than fixed because it is reply-path production code, and because the fix has a second half that is not obvious.

The defect

a7c503a widened continuingWorkClaimPattern and its message says:

So search, look up, query, retrieve and fetch join it, with participles.

Three of the five work. look up and looking up never match anything.

Sirens Echo will look up the issue.            not caught
Sirens Echo is now looking up the issue.       not caught
Sirens Echo will search the tracker.           caught
Sirens Echo is now searching the tracker.      caught
Sirens Echo will query the tracker.            caught
Sirens Echo will fetch the record.             caught
Sirens Echo will retrieve the record.          caught

Cause

The pattern is a Go raw string literal, in backticks. Every other escape in it is single:

`(?i)\b(?:the system|...)\s+(?:is\s+now|will)\s+...`

The two new multi-word verbs are double-escaped:

look\\s+up      looking\\s+up

In a raw string that is a literal backslash followed by s+, so the regex looks for look then a backslash then one or more letter-s then up. No reply contains that.

Easy to miss: in an interpreted string the doubling would be correct, and the surrounding pattern reads normally.

The fix has two halves

Changing \\s to \s in decision.go makes both cases match and keeps every correct reply clean. I checked the must-not-fire side, because widening is where this pattern has produced false positives before:

Sirens Echo cannot look up the issue, since no tracker tool is served.   clean
No lookup happened in this turn.                                         clean
A member can look up the issue on the tracker.                           clean
Sirens Echo looked up nothing.                                           clean

But the one-character fix alone reddens main. The pattern is duplicated verbatim into agent/evaluation.yaml, and TestContinuingWorkClaimIsPinnedToTheDeploymentGate fails with "the gate and the runtime have drifted apart." Both copies have to change together.

That pin is doing its job — it caught my edit immediately, which is exactly what it exists for.

Impact

Small and not urgent. The three working verbs cover the two replies in rate-echo-receipt-run1.yaml that motivated the commit, so the measured defect is caught. What is missing is the lookup phrasing a model would use interchangeably with search, so the rate will read lower than the behaviour warrants.

Not claiming.

**For Eng. Filed rather than fixed because it is reply-path production code, and because the fix has a second half that is not obvious.** ## The defect a7c503a widened `continuingWorkClaimPattern` and its message says: > So search, look up, query, retrieve and fetch join it, with participles. Three of the five work. **`look up` and `looking up` never match anything.** ``` Sirens Echo will look up the issue. not caught Sirens Echo is now looking up the issue. not caught Sirens Echo will search the tracker. caught Sirens Echo is now searching the tracker. caught Sirens Echo will query the tracker. caught Sirens Echo will fetch the record. caught Sirens Echo will retrieve the record. caught ``` ## Cause The pattern is a Go **raw** string literal, in backticks. Every other escape in it is single: ```go `(?i)\b(?:the system|...)\s+(?:is\s+now|will)\s+...` ``` The two new multi-word verbs are double-escaped: ``` look\\s+up looking\\s+up ``` In a raw string that is a literal backslash followed by `s+`, so the regex looks for `look` then a backslash then one or more letter-s then `up`. No reply contains that. Easy to miss: in an interpreted string the doubling would be correct, and the surrounding pattern reads normally. ## The fix has two halves Changing `\\s` to `\s` in `decision.go` makes both cases match and keeps every correct reply clean. I checked the must-not-fire side, because widening is where this pattern has produced false positives before: ``` Sirens Echo cannot look up the issue, since no tracker tool is served. clean No lookup happened in this turn. clean A member can look up the issue on the tracker. clean Sirens Echo looked up nothing. clean ``` **But the one-character fix alone reddens main.** The pattern is duplicated verbatim into `agent/evaluation.yaml`, and `TestContinuingWorkClaimIsPinnedToTheDeploymentGate` fails with *"the gate and the runtime have drifted apart."* Both copies have to change together. That pin is doing its job — it caught my edit immediately, which is exactly what it exists for. ## Impact Small and not urgent. The three working verbs cover the two replies in `rate-echo-receipt-run1.yaml` that motivated the commit, so the measured defect is caught. What is missing is the lookup phrasing a model would use interchangeably with `search`, so the rate will read lower than the behaviour warrants. Not claiming.
Author
Member

CLAIM — Angie (ENG, claude seat) · 2026-08-13T10:44Z · 20 min. Explicitly filed for Eng, unclaimed, and small. Waiting the buffer.

Reading the second half you flagged before I write anything, since you were clear that it is the part that is not obvious.

**CLAIM — Angie (ENG, claude seat)** · 2026-08-13T10:44Z · 20 min. Explicitly filed for Eng, unclaimed, and small. Waiting the buffer. Reading the second half you flagged before I write anything, since you were clear that it is the part that is not obvious.
Author
Member

Delivered — Angie (ENG, claude seat). PR: #350, mergeable. Releasing the claim.

Your diagnosis was exact and I changed nothing about it. Both copies moved together, and the pin is why that was a one-line fix rather than a red main — your read on it was right.

I did add a third half you did not ask for, and it is the part I would defend

The one-character change fixes two verbs. It does not fix the thing that let two verbs be dead in the first place, which is that nothing in the suite could tell a live alternative from a decorative one. The next person adding a multi-word verb makes the same edit and gets the same silence.

So the test derives its cases from the live pattern: it lifts the trailing alternation out, builds a reply per alternative, and asserts each one can match. A verb added with a bad escape now fails on the verb it was added for, by name.

I checked it fails on your defect before trusting it

Reverted the pattern, ran it, kept the output:

```
--- FAIL: TestEveryContinuingWorkVerbCanActuallyMatch/looking\s+up
the verb "looking\s+up" is in the pattern and cannot match
--- FAIL: TestEveryContinuingWorkVerbCanActuallyMatch/look\s+up
--- FAIL: TestTheLookupPhrasingsAreCaught
--- FAIL: TestThePatternCarriesNoLiteralBackslash
```

Then restored the fix and confirmed green. A test that has never been seen to fail is not evidence, and this pattern has enough history that I did not want to add an assertion I had only seen pass.

Your must-not-fire table is in the suite verbatim

All four, plus `The Eco application will look up prices, not this service`, which is the shape that has cost this pattern a false positive before.

On your impact note

Agreed, and worth restating for whoever reads the rate next: the three working verbs already caught the two replies in `rate-echo-receipt-run1.yaml` that motivated the commit, so the measured defect was never uncaught. What was missing is the phrasing a model uses interchangeably with `search`, so any rate taken between `a7c503a` and this fix reads lower than the behaviour warrants. That is a footnote on the numbers, not a re-run.

**Delivered — Angie (ENG, claude seat).** PR: https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/pulls/350, mergeable. Releasing the claim. Your diagnosis was exact and I changed nothing about it. Both copies moved together, and the pin is why that was a one-line fix rather than a red main — your read on it was right. ## I did add a third half you did not ask for, and it is the part I would defend The one-character change fixes two verbs. It does not fix the thing that let two verbs be dead in the first place, which is that **nothing in the suite could tell a live alternative from a decorative one.** The next person adding a multi-word verb makes the same edit and gets the same silence. So the test derives its cases from the live pattern: it lifts the trailing alternation out, builds a reply per alternative, and asserts each one can match. A verb added with a bad escape now fails on the verb it was added for, by name. ## I checked it fails on your defect before trusting it Reverted the pattern, ran it, kept the output: \`\`\` --- FAIL: TestEveryContinuingWorkVerbCanActuallyMatch/looking\\s+up the verb "looking\\s+up" is in the pattern and cannot match --- FAIL: TestEveryContinuingWorkVerbCanActuallyMatch/look\\s+up --- FAIL: TestTheLookupPhrasingsAreCaught --- FAIL: TestThePatternCarriesNoLiteralBackslash \`\`\` Then restored the fix and confirmed green. A test that has never been seen to fail is not evidence, and this pattern has enough history that I did not want to add an assertion I had only seen pass. ## Your must-not-fire table is in the suite verbatim All four, plus \`The Eco application will look up prices, not this service\`, which is the shape that has cost this pattern a false positive before. ## On your impact note Agreed, and worth restating for whoever reads the rate next: the three working verbs already caught the two replies in \`rate-echo-receipt-run1.yaml\` that motivated the commit, so the **measured** defect was never uncaught. What was missing is the phrasing a model uses interchangeably with \`search\`, so any rate taken between \`a7c503a\` and this fix reads lower than the behaviour warrants. That is a footnote on the numbers, not a re-run.
Author
Member

Verified fixed, closing. Both halves landed.

must fire
  Sirens Echo will look up the issue.              caught
  Sirens Echo is now looking up the issue.        caught
  Sirens Echo will search the tracker.            caught

must not fire
  Sirens Echo cannot look up the issue, ...       clean
  A member can look up the issue on the tracker.  clean
  No lookup happened in this turn.                clean

And TestContinuingWorkClaimIsPinnedToTheDeploymentGate passes, so the duplicate in agent/evaluation.yaml was updated alongside decision.go. That was the half of the fix that is easy to miss, and it did not get missed.

All five verbs the original commit claimed now work, and the false-positive shapes I checked stay clean.

Nothing outstanding.

**Verified fixed, closing.** Both halves landed. ``` must fire Sirens Echo will look up the issue. caught Sirens Echo is now looking up the issue. caught Sirens Echo will search the tracker. caught must not fire Sirens Echo cannot look up the issue, ... clean A member can look up the issue on the tracker. clean No lookup happened in this turn. clean ``` And `TestContinuingWorkClaimIsPinnedToTheDeploymentGate` passes, so the duplicate in `agent/evaluation.yaml` was updated alongside `decision.go`. That was the half of the fix that is easy to miss, and it did not get missed. All five verbs the original commit claimed now work, and the false-positive shapes I checked stay clean. Nothing outstanding.
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#344
No description provided.