Quill is a persona and an addressable service role (like Elder). @Quill <request> gets exactly one in-character reply from Quill via Flock.ask. EVENTS.md gains the service-role note first; CHATROOM_SPEC 13 q1 is recorded as decided (Quill/Boss); PERSONAS.md regenerated.
Acceptance criteria — falsifiable tests
TestQuillIsServiceRole (quill_test.go) — Given a nest whose members are Hugin and Munin, when the owner POSTs {"author":"owner","to":"Quill","text":"hello"}, then 201 and the stored record parses to: "Quill" as addressable (no 400). Red now: addressables() has no Quill.
TestQuillAnswersInCharacter — Given a scripted brain that records prompts, when a request is addressed to Quill, then exactly one new message with author: "Quill", kind: "deliver", to: "owner", and the recorded system prompt contains Quill's backstory/strength text from personas.go.
TestQuillNotInNestCrows — Quill never appears in nest.Crows and needs no trust promotion to answer when addressed (service role acts only on address; check matches Elder's gating in respondElder).
go test -run TestQuill . green; ./crows personas > PERSONAS.md contains a Quill section and is committed.
Test command
go test -race -count=1 -run 'TestQuill' .
Blockers / unknowns
None. Names decided: Quill (assistant), Boss (COS).
Epic: #36. Depends on: none
## Goal
Quill is a persona and an addressable service role (like Elder). `@Quill <request>` gets exactly one in-character reply from Quill via `Flock.ask`. EVENTS.md gains the service-role note first; CHATROOM_SPEC 13 q1 is recorded as decided (Quill/Boss); PERSONAS.md regenerated.
## Acceptance criteria — falsifiable tests
1. `TestQuillIsServiceRole` (`quill_test.go`) — Given a nest whose members are Hugin and Munin, when the owner POSTs `{"author":"owner","to":"Quill","text":"hello"}`, then 201 and the stored record parses `to: "Quill"` as addressable (no 400). Red now: `addressables()` has no Quill.
2. `TestQuillAnswersInCharacter` — Given a scripted brain that records prompts, when a request is addressed to Quill, then exactly one new message with `author: "Quill"`, `kind: "deliver"`, `to: "owner"`, and the recorded system prompt contains Quill's backstory/strength text from `personas.go`.
3. `TestQuillNotInNestCrows` — Quill never appears in `nest.Crows` and needs no trust promotion to answer when addressed (service role acts only on address; check matches Elder's gating in `respondElder`).
4. `go test -run TestQuill .` green; `./crows personas > PERSONAS.md` contains a Quill section and is committed.
## Test command
`go test -race -count=1 -run 'TestQuill' .`
## Blockers / unknowns
None. Names decided: Quill (assistant), Boss (COS).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic: #36. Depends on: none
Goal
Quill is a persona and an addressable service role (like Elder).
@Quill <request>gets exactly one in-character reply from Quill viaFlock.ask. EVENTS.md gains the service-role note first; CHATROOM_SPEC 13 q1 is recorded as decided (Quill/Boss); PERSONAS.md regenerated.Acceptance criteria — falsifiable tests
TestQuillIsServiceRole(quill_test.go) — Given a nest whose members are Hugin and Munin, when the owner POSTs{"author":"owner","to":"Quill","text":"hello"}, then 201 and the stored record parsesto: "Quill"as addressable (no 400). Red now:addressables()has no Quill.TestQuillAnswersInCharacter— Given a scripted brain that records prompts, when a request is addressed to Quill, then exactly one new message withauthor: "Quill",kind: "deliver",to: "owner", and the recorded system prompt contains Quill's backstory/strength text frompersonas.go.TestQuillNotInNestCrows— Quill never appears innest.Crowsand needs no trust promotion to answer when addressed (service role acts only on address; check matches Elder's gating inrespondElder).go test -run TestQuill .green;./crows personas > PERSONAS.mdcontains a Quill section and is committed.Test command
go test -race -count=1 -run 'TestQuill' .Blockers / unknowns
None. Names decided: Quill (assistant), Boss (COS).