test(mentions): pin that a name inside a link rewrites the link #466
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!466
Loading…
Reference in a new issue
No description provided.
Delete branch "qa/pin-the-mention-url-collision"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pins #465 without reddening
main.452088dresolves a display name to a mention anywhere it appears in the reply, and a URL is part of the reply:The matcher is right and its scope is not. It requires a non-word character before the name, and every URL separator is one —
/,-,.satisfy both sides — so a name between two slashes matches exactly as if it were prose.The corpus is four real reply shapes
Not invented strings. Two of them are the approved links that
approved-wiki-linkandapproved-live-surface-linkexist to require, which is what makes this member-facing rather than cosmetic: a rewritten host does not resolve, and reaching the right page is the service's job.Those two gate cases would catch this in principle and cannot in practice — they run with no roster, so
resolveMentionsreturns early on an empty map. The guard is on one side of a seam and the failure is on the other, which is the shape most of today's findings have had.Characterization, not a demand
The fix is a scope change with a real offset choice in it.
maskURLsatdecision.go:24already does this for four validators, but matching against masked text while rewriting the original needs the offsets mapped back, and that is an implementation decision rather than a one-liner. Asserting the desired behaviour here would reddenmainfor a choice nobody has made.Verified it flips — matching against
maskURLs(reply)fails this test naming the colliding names:The half that must survive is pinned beside it
Kaistill resolves andKaitlynstill does not. A fix that fixes the URL case by narrowing too far fails this file too, which is the failure mode I would expect from a hurried scope change — and the one the four existing bounds were written to avoid.Test-only. No production change.
Refs #465