the agents should have 1st class knowledge of server rules #224

Open
opened 2026-08-13 01:48:12 +00:00 by coilysiren · 1 comment
Owner

Echo should hold first-class knowledge of the server rules.

Resolved spec (design pass, 2026-08-15)

Source of truth - Echo reads the rules live from the rules channel. No versioned copy in repo config. A config-tracked verbatim copy and a copy-plus-drift-check hybrid were both rejected, because the rules channel is the canonical artifact and quoting a stale copy is a worse failure than occasionally not having the rules.

Cache TTL, was unresolved, now decided - 1 hour. Fetch on first need, serve from cache for an hour, refetch after. Per-request fetching was rejected as too chatty, and cache-until-restart as too stale.

Read-failure copy, was unresolved, now decided - name the failure and point at the channel:

I could not read the rules channel just now. It is at <#channel-id>.

Echo must not answer from memory, must not imply it checked, and must not silently serve a stale cache. Serving a labelled stale cache was considered and rejected, since it reintroduces the exact stale-quote failure that live reads were chosen to avoid.

Channel references carry IDs, not names. A curated entry written as #rules is rejected by ValidateGrounding as an invented channel and fails the turn with no repair. <#channel-id> passes both grounding and the identifier guard as of 0486de7. This binds the failure copy above and every channel any curated entry points at.

Blocked on - Discord MCP self-channel read, coilyco-bridge/deploy#387. Do not build the quoting work against a mock and call it done.

Acceptance

  • Echo quotes a rule verbatim from a live read and renders the rules channel as <#id>.
  • A rules edit in Discord reaches Echo's answer within one hour, with no restart and no deploy.
  • With the rules channel unreachable, Echo emits the failure copy above and zero rule text. A test asserts no rule content appears on that path.
  • No rules text is checked into repo config.

Paired - #210 covers the quoting and linking behaviour built on this source.

Echo should hold first-class knowledge of the server rules. ## Resolved spec (design pass, 2026-08-15) **Source of truth** - Echo reads the rules live from the rules channel. No versioned copy in repo config. A config-tracked verbatim copy and a copy-plus-drift-check hybrid were both rejected, because the rules channel is the canonical artifact and quoting a stale copy is a worse failure than occasionally not having the rules. **Cache TTL, was unresolved, now decided** - 1 hour. Fetch on first need, serve from cache for an hour, refetch after. Per-request fetching was rejected as too chatty, and cache-until-restart as too stale. **Read-failure copy, was unresolved, now decided** - name the failure and point at the channel: > I could not read the rules channel just now. It is at `<#channel-id>`. Echo must not answer from memory, must not imply it checked, and must not silently serve a stale cache. Serving a labelled stale cache was considered and rejected, since it reintroduces the exact stale-quote failure that live reads were chosen to avoid. **Channel references carry IDs, not names.** A curated entry written as `#rules` is rejected by `ValidateGrounding` as an invented channel and fails the turn with no repair. `<#channel-id>` passes both grounding and the identifier guard as of `0486de7`. This binds the failure copy above and every channel any curated entry points at. **Blocked on** - Discord MCP self-channel read, coilyco-bridge/deploy#387. Do not build the quoting work against a mock and call it done. **Acceptance** * Echo quotes a rule verbatim from a live read and renders the rules channel as `<#id>`. * A rules edit in Discord reaches Echo's answer within one hour, with no restart and no deploy. * With the rules channel unreachable, Echo emits the failure copy above and zero rule text. A test asserts no rule content appears on that path. * No rules text is checked into repo config. **Paired** - #210 covers the quoting and linking behaviour built on this source.
Member

Design decision — rules source of truth

Recorded by Delphi (design seat). Kai's decision, 2026-08-12.

Echo reads the rules live from the rules channel. No versioned copy in repo config.

Kai rejected both the config-tracked verbatim copy and the copy-plus-drift-check hybrid. The rationale that follows from the choice: the rules channel is the canonical artifact, and Echo quoting a stale copy of the server rules is a worse failure than Echo occasionally not having them.

Dependency — this issue is blocked

Live reads require Discord MCP self-channel read access: coilyco-bridge/deploy#387 — "create / update discord mcp for sirens deep / echo to read their own channels". This issue cannot land before that one. The sequencing is real; please don't build the quoting work against a mock and call it done.

Requirements once unblocked

  • Echo quotes rules verbatim — no paraphrase, no summary-in-its-own-words (#210).
  • Echo links the actual channel alongside the quote.
  • Define the failure state: what Echo says when the rules channel is unreachable. It must not invent rules from memory, and it must not silently answer as if it had checked. Unresolved — needs an owner.
  • Caching and refresh cadence for the live read is unresolved. A per-request fetch is likely too chatty; pick a TTL and record it here.

Paired issue for the quoting and linking behavior: #210

## Design decision — rules source of truth Recorded by Delphi (design seat). Kai's decision, 2026-08-12. **Echo reads the rules live from the rules channel.** No versioned copy in repo config. Kai rejected both the config-tracked verbatim copy and the copy-plus-drift-check hybrid. The rationale that follows from the choice: the rules channel is the canonical artifact, and Echo quoting a stale copy of the server rules is a worse failure than Echo occasionally not having them. ### Dependency — this issue is blocked Live reads require Discord MCP self-channel read access: https://forgejo.coilysiren.me/coilyco-bridge/deploy/issues/387 — "create / update discord mcp for sirens deep / echo to read their own channels". This issue cannot land before that one. The sequencing is real; please don't build the quoting work against a mock and call it done. ### Requirements once unblocked - Echo quotes rules **verbatim** — no paraphrase, no summary-in-its-own-words (https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/210). - Echo links the **actual channel** alongside the quote. - Define the failure state: what Echo says when the rules channel is unreachable. It must not invent rules from memory, and it must not silently answer as if it had checked. **Unresolved — needs an owner.** - Caching and refresh cadence for the live read is **unresolved**. A per-request fetch is likely too chatty; pick a TTL and record it here. Paired issue for the quoting and linking behavior: https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/210
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#224
No description provided.