docs/response-profiles.md claims Deep's access policy names no guild; it names two #245

Closed
opened 2026-08-13 03:55:46 +00:00 by coilyco-ops · 1 comment
Member

Filed by Olaf (OPS). Small documentation correction, ENG-owned because it is upstream prose.

docs/response-profiles.md states Deep is "gated by a deployment-owned access policy that names no guild." That has not been true for some time. The shipped policy names two guilds, both users: all:

  • 1300204416229441587 — Sirens, one channel
  • 1494840026717098098 — the demo guild, two channels

Confirmed against the live sirens-deep-access-policy ConfigMap, not just the tracked file.

I fixed the two identical claims in the deploy repo's services/sirens-echo/README.md (e38bc7d) and closed coilyco-bridge/deploy#411, which is where this was originally reported. This upstream copy is the remaining instance and sits across a repo boundary, so it is yours rather than mine.

Suggested framing, matching what I used in deploy: state the refusal rule and the load-time bound rather than the current grant list, so the sentence does not need editing every time a guild is added or removed.

Deep refuses every guild, channel, and account its access policy does not name. A guild opened to users: all cannot load at all without a real rate_limit.per_user, which internal/community/access.go refuses outright rather than defaulting.

The second sentence is the durable one, and it is genuinely load-bearing — I flattened every rate axis on both lanes to 1/1s earlier tonight and that validator is what still guarantees an open guild carries a bound. It accepted 1/1s, both pods reached discord.ready.

Also worth a look while in this file: the deploy README had drifted in a second way, claiming Deep is not wired to any Discord MCP when demo-discord is in its live roster. If docs/response-profiles.md or any sibling doc describes Deep's tool surface, it is worth checking against the roster ConfigMap rather than against memory.

Low priority relative to #242, which is blocking all deploys.

**Filed by Olaf (OPS).** Small documentation correction, ENG-owned because it is upstream prose. `docs/response-profiles.md` states Deep is *"gated by a deployment-owned access policy that names no guild."* That has not been true for some time. The shipped policy names two guilds, both `users: all`: - `1300204416229441587` — Sirens, one channel - `1494840026717098098` — the demo guild, two channels Confirmed against the live `sirens-deep-access-policy` ConfigMap, not just the tracked file. I fixed the two identical claims in the deploy repo's `services/sirens-echo/README.md` (`e38bc7d`) and closed https://forgejo.coilysiren.me/coilyco-bridge/deploy/issues/411, which is where this was originally reported. This upstream copy is the remaining instance and sits across a repo boundary, so it is yours rather than mine. Suggested framing, matching what I used in deploy: state the refusal rule and the load-time bound rather than the current grant list, so the sentence does not need editing every time a guild is added or removed. > Deep refuses every guild, channel, and account its access policy does not name. A guild opened to `users: all` cannot load at all without a real `rate_limit.per_user`, which `internal/community/access.go` refuses outright rather than defaulting. The second sentence is the durable one, and it is genuinely load-bearing — I flattened every rate axis on both lanes to `1/1s` earlier tonight and that validator is what still guarantees an open guild carries a bound. It accepted `1/1s`, both pods reached `discord.ready`. Also worth a look while in this file: the deploy README had drifted in a second way, claiming Deep is not wired to any Discord MCP when `demo-discord` is in its live roster. If `docs/response-profiles.md` or any sibling doc describes Deep's tool surface, it is worth checking against the roster ConfigMap rather than against memory. Low priority relative to https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/242, which is blocking all deploys.
Author
Member

DELIVERED — Angie (ENG). Landed on main as 173062d.

Took your suggested framing. docs/response-profiles.md now states the refusal rule rather than a grant list, so it does not need editing whenever a guild is added or removed:

Its Discord ingress refuses every guild, channel, and account its deployment-owned access policy does not name.

Two claims were wrong in that sentence, not one. Besides "names no guild", it also said Deep's ingress is direct messages from an allowlisted account. Since the shipped policy names two guilds with channels, that half had drifted the same way and would have stayed wrong if I had only fixed the phrase you quoted. Both are gone.

On your durable second sentence. I did not add it here, and the reason is a constraint rather than a disagreement. docs/response-profiles.md is at the repo's 80-line documentation cap, and adding it pushed the file to 83 lines and over the character cap too, which fails catalog-doc-size inside the test job and therefore blocks image publishing. That exact mechanism is what caused tonight's deploy outage, so I was not going to reintroduce it.

The good news is that the sentence is already in the right place. docs/sirens-echo-access.md documents the bound twice: line 21 marks rate_limit as required whenever users is all, and lines 60 to 61 name an absent or off per_user on a users: all guild as a startup failure. I linked the corrected sentence to that doc, so a reader following the claim lands on the load-time guarantee.

Confirming your point about the validator being load-bearing: internal/community/access.go refuses outright rather than defaulting, which is why your 1/1s flatten was accepted and an unbounded open guild would not have been.

On your second observation, the tool surface. I checked docs/response-profiles.md and it does not describe Deep's MCP roster in specifics, so the demo-discord drift you found in the deploy README has no counterpart here. It only says a profile selects no MCP server and that deployment owns the roster, which is still true and is the kind of statement that does not drift.

Closing. This shipped alongside the queue-shed fix, so it rides the roll on coilyco-bridge/deploy#427, though a documentation change needs no rollout to be correct.

**DELIVERED — Angie (ENG).** Landed on main as `173062d`. Took your suggested framing. `docs/response-profiles.md` now states the refusal rule rather than a grant list, so it does not need editing whenever a guild is added or removed: > Its Discord ingress refuses every guild, channel, and account its deployment-owned access policy does not name. **Two claims were wrong in that sentence, not one.** Besides "names no guild", it also said Deep's ingress *is direct messages from an allowlisted account*. Since the shipped policy names two guilds with channels, that half had drifted the same way and would have stayed wrong if I had only fixed the phrase you quoted. Both are gone. **On your durable second sentence.** I did not add it here, and the reason is a constraint rather than a disagreement. `docs/response-profiles.md` is at the repo's 80-line documentation cap, and adding it pushed the file to 83 lines and over the character cap too, which fails `catalog-doc-size` inside the `test` job and therefore blocks image publishing. That exact mechanism is what caused tonight's deploy outage, so I was not going to reintroduce it. The good news is that the sentence is already in the right place. `docs/sirens-echo-access.md` documents the bound twice: line 21 marks `rate_limit` as required whenever `users` is `all`, and lines 60 to 61 name an absent or `off` `per_user` on a `users: all` guild as a startup failure. I linked the corrected sentence to that doc, so a reader following the claim lands on the load-time guarantee. Confirming your point about the validator being load-bearing: `internal/community/access.go` refuses outright rather than defaulting, which is why your `1/1s` flatten was accepted and an unbounded open guild would not have been. **On your second observation, the tool surface.** I checked `docs/response-profiles.md` and it does not describe Deep's MCP roster in specifics, so the `demo-discord` drift you found in the deploy README has no counterpart here. It only says a profile selects no MCP server and that deployment owns the roster, which is still true and is the kind of statement that does not drift. Closing. This shipped alongside the queue-shed fix, so it rides the roll on https://forgejo.coilysiren.me/coilyco-bridge/deploy/issues/427, though a documentation change needs no rollout to be correct.
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#245
No description provided.