Role and voice are separate axes, nothing states the model, and Echo runs operator doctrine over a reference desk #1070

Closed
opened 2026-08-19 09:16:49 +00:00 by coilyco-ops · 2 comments
Member

Kai's direction, 2026-08-19, recorded by Saiya (exec seat), from a live session. Behind August 20, under the #929 freeze.

Tracked in the aggregate epic at coilysiren/inbox, linked in a comment once filed.

The model, stated once

Every community lane composes two settings that vary independently, and the pair is never described as a pair:

  • Role axis - SIRENS_ECHO_ROLE, which baked doctrine bundle the deployment loads
  • Voice axis - response_style in the lane definition, the register it speaks in

#1063 already says it, in passing, as a note about a different issue: "The lane decides response style: role and voice are separate axes." That sentence is the whole model and it is buried in a comment on a fourth-lane build.

The deployed state

Read from coilyco-bridge/deploy/services/sirens-echo/deploy/ on main:

  • Echo - SIRENS_ECHO_ROLE=ops, response_style: neutral, audit_role: community
  • Deep - SIRENS_ECHO_ROLE=creator, response_style: social, audit_role: general

Two lanes on one diagonal of a 2x2. Nothing has ever occupied the other one, and because nothing has, the two axes read as one setting with two presets rather than as two independent choices.

Why naming it is worth doing rather than just noticing

1. Echo's role does not describe Echo. ops is operator doctrine, and Echo's tool surface is a reference desk. #1062 measured seven of twelve servers pointing at catalogues and concluded the capability shipped while the framing never caught up. The mismatch is not abstract: it is the role bundle the pod actually loads. deploy's own README says Echo takes ops "for the operator doctrine and keeps its neutral voice", which reads as a deliberate pairing, and the roster says the operator half stopped being true some time ago.

2. It is the argument #1062 is already making without the vocabulary for it. #1062's strongest line is that "Librarian is a role, not an emotion" - a way for Echo to gain character while keeping the restraint the Sirens admins chose it for. That is precisely a claim that the role axis can move while the voice axis holds still. With the axes named, it is a one-line argument. Without them, #1062 has to re-derive it in a paragraph and a reader can still hear it as "make Echo more like Deep", which is the opposite of the proposal.

3. It gives the fourth-lane question a decision procedure. #1063 proposes a new lane for the librarian role. If role and voice are genuinely independent, a new role on an existing lane and a new lane are different-cost answers to the same need, and the cheap one should have to be ruled out first. Right now both issues are open and neither states the axis it is moving.

4. It is the rule the almanac wing needs. coilyco-bridge/deploy#720 queues four sources that extend the desk. Whether they land on one lane or both is a role-axis question, and #729 just settled that the lanes do not share one toolset. The next roster decision should cite an axis rather than a precedent.

What this asks for

No behavior change and no code. A written model, in the repo that owns lane identity.

  • docs/sirens-echo-role-and-voice.md is the owning doc, referenced from deploy's README as the explanation for Echo's pairing. Read it first. If it already states the two axes, this issue closes as already-documented and the finding reduces to the Echo mismatch below.
  • If it does not, extend it: name the two axes, name the setting each one lives in, and record the deployed pairing for every lane including Dowel.
  • Record that Echo's ops role is a live mismatch with its roster, whatever #1062 decides. If the librarian lands, this resolves. If it does not, the mismatch stays and should be recorded as accepted rather than unnoticed.

What I am not doing, deliberately

No persona wording, no register drafting, no member-facing description. Those are communication-shaped and they belong to the Content Creator role, same boundary #1062 drew. This issue is the model and the measurement. The words are Gem's.

Acceptance

  • docs/sirens-echo-role-and-voice.md read before anything is written, and this issue records what it already covered
  • The two axes named, with the setting each lives in
  • The deployed pairing recorded for Echo, Deep and Dowel
  • Echo's ops-over-reference-desk mismatch recorded, resolved or accepted
  • No lane definition, values file, or roster changes in this issue
  • #1062 - the librarian decision, which this gives vocabulary to
  • #1063 - the fourth-lane build, which names the axes in a comment
  • #1049 - why an emphatic persona is a real risk, the caution on the voice axis
  • #200 - the capability roster
  • coilyco-bridge/deploy#729 - the lanes do not share one toolset
  • coilyco-bridge/deploy#720 - the almanac wing that needs the rule
  • coilyco-bridge/deploy#731 - Gutendex back to Echo, the roster half of the same mismatch
**Kai's direction, 2026-08-19, recorded by Saiya (exec seat), from a live session. Behind August 20, under the #929 freeze.** Tracked in the aggregate epic at `coilysiren/inbox`, linked in a comment once filed. ## The model, stated once Every community lane composes two settings that vary independently, and **the pair is never described as a pair**: * **Role axis** - `SIRENS_ECHO_ROLE`, which baked doctrine bundle the deployment loads * **Voice axis** - `response_style` in the lane definition, the register it speaks in #1063 already says it, in passing, as a note about a different issue: "The lane decides response style: role and voice are separate axes." **That sentence is the whole model and it is buried in a comment on a fourth-lane build.** ## The deployed state Read from `coilyco-bridge/deploy/services/sirens-echo/deploy/` on `main`: * **Echo** - `SIRENS_ECHO_ROLE=ops`, `response_style: neutral`, `audit_role: community` * **Deep** - `SIRENS_ECHO_ROLE=creator`, `response_style: social`, `audit_role: general` Two lanes on one diagonal of a 2x2. **Nothing has ever occupied the other one**, and because nothing has, the two axes read as one setting with two presets rather than as two independent choices. ## Why naming it is worth doing rather than just noticing **1. Echo's role does not describe Echo.** `ops` is operator doctrine, and Echo's tool surface is a reference desk. #1062 measured seven of twelve servers pointing at catalogues and concluded the capability shipped while the framing never caught up. **The mismatch is not abstract: it is the role bundle the pod actually loads.** `deploy`'s own README says Echo takes `ops` "for the operator doctrine and keeps its neutral voice", which reads as a deliberate pairing, and the roster says the operator half stopped being true some time ago. **2. It is the argument #1062 is already making without the vocabulary for it.** #1062's strongest line is that "Librarian is a role, not an emotion" - a way for Echo to gain character while keeping the restraint the Sirens admins chose it for. **That is precisely a claim that the role axis can move while the voice axis holds still.** With the axes named, it is a one-line argument. Without them, #1062 has to re-derive it in a paragraph and a reader can still hear it as "make Echo more like Deep", which is the opposite of the proposal. **3. It gives the fourth-lane question a decision procedure.** #1063 proposes a new lane for the librarian role. If role and voice are genuinely independent, a new **role** on an existing lane and a new **lane** are different-cost answers to the same need, and the cheap one should have to be ruled out first. Right now both issues are open and neither states the axis it is moving. **4. It is the rule the almanac wing needs.** `coilyco-bridge/deploy#720` queues four sources that extend the desk. Whether they land on one lane or both is a role-axis question, and #729 just settled that the lanes do not share one toolset. **The next roster decision should cite an axis rather than a precedent.** ## What this asks for **No behavior change and no code.** A written model, in the repo that owns lane identity. * `docs/sirens-echo-role-and-voice.md` is the owning doc, referenced from `deploy`'s README as the explanation for Echo's pairing. **Read it first.** If it already states the two axes, this issue closes as already-documented and the finding reduces to the Echo mismatch below. * If it does not, extend it: name the two axes, name the setting each one lives in, and record the deployed pairing for every lane including Dowel. * Record that **Echo's `ops` role is a live mismatch with its roster**, whatever #1062 decides. If the librarian lands, this resolves. If it does not, the mismatch stays and should be recorded as accepted rather than unnoticed. ## What I am not doing, deliberately **No persona wording, no register drafting, no member-facing description.** Those are communication-shaped and they belong to the Content Creator role, same boundary #1062 drew. **This issue is the model and the measurement. The words are Gem's.** ## Acceptance * `docs/sirens-echo-role-and-voice.md` read before anything is written, and this issue records what it already covered * The two axes named, with the setting each lives in * The deployed pairing recorded for Echo, Deep and Dowel * Echo's `ops`-over-reference-desk mismatch recorded, resolved or accepted * No lane definition, values file, or roster changes in this issue ## Related * #1062 - the librarian decision, which this gives vocabulary to * #1063 - the fourth-lane build, which names the axes in a comment * #1049 - why an emphatic persona is a real risk, the caution on the voice axis * #200 - the capability roster * `coilyco-bridge/deploy#729` - the lanes do not share one toolset * `coilyco-bridge/deploy#720` - the almanac wing that needs the rule * `coilyco-bridge/deploy#731` - Gutendex back to Echo, the roster half of the same mismatch
Author
Member

Aggregate epic filed: coilysiren/inbox#382. #1062 and #1063 both closed into it, so the librarian decision and the fourth-lane fork are carried there rather than in this repo. This issue stays open and is first in the epic's ordering, because the vocabulary lands whatever gets decided.

Aggregate epic filed: **`coilysiren/inbox#382`**. #1062 and #1063 both closed into it, so the librarian decision and the fourth-lane fork are carried there rather than in this repo. **This issue stays open and is first in the epic's ordering**, because the vocabulary lands whatever gets decided.
Author
Member

Done, in two PRs. #1073 here and coilyco-bridge/deploy#733.

Correction to this issue's body

Two claims here were wrong, both from the same mistake.

"docs/sirens-echo-role-and-voice.md is the owning doc." It does not exist and never has. coilyco-bridge/deploy cites that path in two files and both are dead references. The content is in docs/sirens-echo-identity.md under a section titled "Role and voice are separate axes", so the first acceptance criterion was met by reading, not writing. deploy#733 repoints both.

"Two lanes on one diagonal of a 2x2. Nothing has ever occupied the other one." Wrong, because it omitted Dowel. Dowel composes engineer and answers social, so the deployed set is:

  • Echo - ops, neutral
  • Deep - creator, social
  • Dowel - engineer, social

Deep and Dowel share a voice and differ in doctrine, which is the demonstration that the axes vary independently. This issue undercounted the evidence for its own argument.

What actually shipped

The two genuinely missing pieces, both in #1073:

  • The deployed pairings, including Dowel, and Dowel as the near-miss: it was briefly set neutral to track its engineer role, which would have composed a meld the same prompt then bars from expression.
  • The tool-surface boundary. Neither axis describes what a lane can reach, and Echo's roster is mostly catalogues while its doctrine is the operator charter, so reading ops to predict Echo's reach gets the wrong answer. Recorded as a live mismatch, not resolved, which is what this issue asked for either way.

One finding worth its own issue

This repository's docs budget is exhausted. docs/ is at 40 of 40 for the large band, and every page sits within about 100 characters of the 8000-char cap. sirens-echo-reply-assembly.md was already at exactly 7998 and identity.md now matches it. That is why the content stayed in place instead of becoming the file deploy cites.

The next doc addition anywhere in this repository needs a merge first. Evidence for coilysiren/inbox#374.

just gate green on #1073: build, policy-check, vet, test, test-skips, pre-commit.

Done, in two PRs. **`#1073`** here and **`coilyco-bridge/deploy#733`**. ## Correction to this issue's body Two claims here were wrong, both from the same mistake. **"`docs/sirens-echo-role-and-voice.md` is the owning doc."** It does not exist and never has. `coilyco-bridge/deploy` cites that path in two files and both are dead references. The content is in **`docs/sirens-echo-identity.md`** under a section titled "Role and voice are separate axes", so the first acceptance criterion was met by reading, not writing. deploy#733 repoints both. **"Two lanes on one diagonal of a 2x2. Nothing has ever occupied the other one."** **Wrong, because it omitted Dowel.** Dowel composes `engineer` and answers `social`, so the deployed set is: * Echo - `ops`, `neutral` * Deep - `creator`, `social` * Dowel - `engineer`, `social` **Deep and Dowel share a voice and differ in doctrine**, which is the demonstration that the axes vary independently. This issue undercounted the evidence for its own argument. ## What actually shipped The two genuinely missing pieces, both in #1073: * **The deployed pairings**, including Dowel, and Dowel as the near-miss: it was briefly set `neutral` to track its engineer role, which would have composed a meld the same prompt then bars from expression. * **The tool-surface boundary.** Neither axis describes what a lane can reach, and Echo's roster is mostly catalogues while its doctrine is the operator charter, so reading `ops` to predict Echo's reach gets the wrong answer. **Recorded as a live mismatch, not resolved**, which is what this issue asked for either way. ## One finding worth its own issue **This repository's docs budget is exhausted.** `docs/` is at 40 of 40 for the `large` band, and every page sits within about 100 characters of the 8000-char cap. `sirens-echo-reply-assembly.md` was already at exactly 7998 and `identity.md` now matches it. That is why the content stayed in place instead of becoming the file deploy cites. **The next doc addition anywhere in this repository needs a merge first.** Evidence for `coilysiren/inbox#374`. `just gate` green on #1073: build, policy-check, vet, test, test-skips, pre-commit.
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#1070
No description provided.