A conspiracy request invites N crows (N = min(guardrail cap, invited field, nest size)), each prompted with its own lens directive (from personas.go Prompt policy), so distinct strengths produce distinct readings. No @-mention needed; each invited crow is invoked once.
Acceptance criteria — falsifiable tests
TestConspiracyInvitesDistinctLenses — Given nest(Hugin, Munin, Soot) + a scriptedBrain recording (system,prompt) pairs, when a conspiracy request arrives (mode conspiracy, no to), then exactly 3 prompts fire and each prompt contains only its own crow's persona text and that crow's name — and no two prompts are equal. Red now, green after.
TestConspiracyInviteCapped — Given a nest with 8 crows and a conspiracy asking for 4 (via invited), then exactly min(4, MurderSize=3) = 3 prompts fire (the cap is MurderSize until a dedicated MaxConspiracy exists; the test asserts 3 with DefaultGuardrails). Red now, green after.
The conspiracy system prompt line ("you are one lens among several; answer from your strength, not the flock's consensus") appears in every invited prompt: assert strings.Contains. Red now, green after.
Test command
go test -race -run 'TestConspiracyInvites' .
Blockers / unknowns
Reuse respondToRequest's KIND contract so each lens still answers deliver/claim.
Epic: #21. Depends on: #22, #23
## Goal
A `conspiracy` request invites N crows (N = min(guardrail cap, invited field, nest size)), each prompted with its **own lens directive** (from `personas.go` Prompt policy), so distinct strengths produce distinct readings. No @-mention needed; each invited crow is invoked once.
## Acceptance criteria — falsifiable tests
1. `TestConspiracyInvitesDistinctLenses` — Given nest(Hugin, Munin, Soot) + a scriptedBrain recording (system,prompt) pairs, when a conspiracy request arrives (mode conspiracy, no `to`), then exactly 3 prompts fire and each prompt contains only its own crow's persona text and that crow's name — and no two prompts are equal. Red now, green after.
2. `TestConspiracyInviteCapped` — Given a nest with 8 crows and a conspiracy asking for 4 (via `invited`), then exactly min(4, MurderSize=3) = 3 prompts fire (the cap is `MurderSize` until a dedicated `MaxConspiracy` exists; the test asserts 3 with DefaultGuardrails). Red now, green after.
3. The `conspiracy` system prompt line ("you are one lens among several; answer from your strength, not the flock's consensus") appears in every invited prompt: assert `strings.Contains`. Red now, green after.
## Test command
`go test -race -run 'TestConspiracyInvites' .`
## Blockers / unknowns
Reuse `respondToRequest`'s KIND contract so each lens still answers deliver/claim.
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: #21. Depends on: #22, #23
Goal
A
conspiracyrequest invites N crows (N = min(guardrail cap, invited field, nest size)), each prompted with its own lens directive (frompersonas.goPrompt policy), so distinct strengths produce distinct readings. No @-mention needed; each invited crow is invoked once.Acceptance criteria — falsifiable tests
TestConspiracyInvitesDistinctLenses— Given nest(Hugin, Munin, Soot) + a scriptedBrain recording (system,prompt) pairs, when a conspiracy request arrives (mode conspiracy, noto), then exactly 3 prompts fire and each prompt contains only its own crow's persona text and that crow's name — and no two prompts are equal. Red now, green after.TestConspiracyInviteCapped— Given a nest with 8 crows and a conspiracy asking for 4 (viainvited), then exactly min(4, MurderSize=3) = 3 prompts fire (the cap isMurderSizeuntil a dedicatedMaxConspiracyexists; the test asserts 3 with DefaultGuardrails). Red now, green after.conspiracysystem prompt line ("you are one lens among several; answer from your strength, not the flock's consensus") appears in every invited prompt: assertstrings.Contains. Red now, green after.Test command
go test -race -run 'TestConspiracyInvites' .Blockers / unknowns
Reuse
respondToRequest's KIND contract so each lens still answers deliver/claim.