Echo can name people and cannot reach them, because Parse is empty and nothing resolves a name #457

Closed
opened 2026-08-13 13:53:34 +00:00 by coilyco-ops · 0 comments
Member

Slice of #219, where Kai activated the intent and said "Lets turn on the feature". The Deep half is an MCP grant and stays on that issue; this is the Echo half, which is harness code and was never a grant.

The defect

Two things, and each alone is sufficient:

  • every reply carries Parse: [], so Discord parses no mentions — even a correct <@id> arrives inert
  • nothing anywhere resolves a name to an account

So the service could name people and could not reach them.

Scope

A name resolves only if it belongs to someone already in the turn: an author in the history, the member who spoke, or someone one of those messages mentioned. No membership lookup and no API call — all of it is in the payloads the turn was already built from.

Parse stays empty. The allowance is an explicit list of ids the harness resolved, so a mention is something the harness decided to deliver rather than something the model wrote.

Why the narrowest roster

Every guild member and named roles were both considered. The conversation roster needs no new data source, and the only people reachable are people already in the room. Widening later is a change of source, not a change of shape.

Bounds that make it safe to read

  • a name under three characters never resolves, since it matches too much ordinary prose
  • a name inside a longer word is not that person
  • someone named four times is reached once, and the other occurrences stay as the name
  • an existing mention is left alone, so nothing nests
  • a longer name wins over a shorter one it contains

Acceptance

  • Naming a participant reaches them; naming a non-participant does not.
  • An empty roster leaves a reply byte-identical.
  • Parse is never widened.
**Slice of** https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/219, where Kai activated the intent and said *"Lets turn on the feature"*. The Deep half is an MCP grant and stays on that issue; this is the Echo half, which is harness code and was never a grant. ## The defect Two things, and each alone is sufficient: - every reply carries `Parse: []`, so Discord parses **no** mentions — even a correct `<@id>` arrives inert - **nothing anywhere resolves a name to an account** So the service could name people and could not reach them. ## Scope A name resolves only if it belongs to someone already in the turn: an author in the history, the member who spoke, or someone one of those messages mentioned. No membership lookup and no API call — all of it is in the payloads the turn was already built from. `Parse` stays empty. The allowance is an explicit list of ids the harness resolved, so a mention is something the harness decided to deliver rather than something the model wrote. ## Why the narrowest roster Every guild member and named roles were both considered. The conversation roster needs no new data source, and the only people reachable are people already in the room. Widening later is a change of source, not a change of shape. ## Bounds that make it safe to read - a name under three characters never resolves, since it matches too much ordinary prose - a name inside a longer word is not that person - someone named four times is reached **once**, and the other occurrences stay as the name - an existing mention is left alone, so nothing nests - a longer name wins over a shorter one it contains ## Acceptance - Naming a participant reaches them; naming a non-participant does not. - An empty roster leaves a reply byte-identical. - `Parse` is never widened.
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#457
No description provided.