Part of: docs/SCOPE.md (S1/C) Depends on: #2 (Epic B, closed), #5 (claim classes decided), #7 (Jev score/choice probe, closed)
Objective
A nest request carries a work mode — solo, conspiracy (several crows, one task, distinct lenses) or split — chosen by Jev with a header escape, and the room behaves differently per mode: claims are arbitrated, conspiracies invite multiple responders with lens directives, restatements get review nudges, and an Elder-style merge closes a thread on request. After this epic, "who takes up work and how" is classification-driven, per Smokey's rule that multiple crows may take the same task for different perspectives.
Context a stranger needs
Decisions this implements: claim classes (#5: solo/split first-claim-wins, conspiracy expects multiple claims, restaters get a nudge not silence), tagging (#3: Jev first, header fallback) — mode uses the same rule shape. Terminology: docs/SCOPE.md — "conspiracy" is a noun (a conspiracy of crows), the allusion is "so many crows"; the pipeline's legacy murder mode string is not reused in nest payloads.
Existing machinery: Message/MessageStore (nestlog.go), POST /api/nests/{id}/messages with guardrails (nestapi.go:postNestMessage), must-respond responder (respondToRequest, nestReplySystem), @-addressing (addressing.go), Jev choice-classification pattern (Flock.ClassifyKind in jev.go + kindQuestions; SystemOne parses choice/score/noul, verified live in #7: score/noul work, noul has no confidence).
Jev choice-vs-score guidance (JEV_STRATEGIES.md strategy 3): mode is discrete -> use choice with an escape option, band = CROWS_JEV_THRESHOLD.
Guardrails (guardrails.go): MurderSize (3) is the existing team-size cap — reuse it as the conspiracy invite cap (MaxCrowsInFlight still bounds total).
Contracts-first: the mode fields go into EVENTS.md in the C1 diff before the server reads them.
pick (flock.go:100) rotates nest crows; Elder is not in roster but is a service role (see CHATROOM_SPEC section 6 + personas.go Elder) — C5 makes "Elder" addressable in nests for synthesis on request only.
Out of scope for this epic
The expectation ledger (Epic E), assistant/COS roles (D/F), trust-gated unprompted speaking beyond what B4 already enforces, debate mode, visible budgets.
#23 — Claim arbitration per mode (solo/split first-claim-wins, conspiracy multiple)
#24 — Conspiracy invites N responders with per-crow lens directives
#25 — Divergence check: restated perspective gets a review nudge, not silence
#26 — Elder synthesis on request (addressable service role, merges the thread)
#27 — Directed assignment holds: strangers speak only when addressed (regression + claim-author check)
#28 — Guardrails: mode/noul calls through the flock wrapper, capped invites, logged verdicts
Definition of done
With a scripted brain and fake Jev server: a conspiracy request produces 2+ distinct claims and delivers, a restated deliver is followed by a nudge while still stored, a solo request's second claim is refused with a message naming the owner, an Elder-addressed request merges the thread, and every Jev call shows up in the flight log via ReadEvents. All Epic B tests still pass; go vet ./... and gofmt -l . clean.
Part of: docs/SCOPE.md (S1/C) Depends on: #2 (Epic B, closed), #5 (claim classes decided), #7 (Jev score/choice probe, closed)
## Objective
A nest request carries a work **mode** — `solo`, `conspiracy` (several crows, one task, distinct lenses) or `split` — chosen by Jev with a header escape, and the room behaves differently per mode: claims are arbitrated, conspiracies invite multiple responders with lens directives, restatements get review nudges, and an Elder-style merge closes a thread on request. After this epic, "who takes up work and how" is classification-driven, per Smokey's rule that multiple crows may take the same task for different perspectives.
## Context a stranger needs
- Decisions this implements: claim classes (#5: solo/split first-claim-wins, conspiracy expects multiple claims, restaters get a nudge not silence), tagging (#3: Jev first, header fallback) — mode uses the same rule shape. Terminology: docs/SCOPE.md — "conspiracy" is a noun (a conspiracy of crows), the allusion is "so many crows"; the pipeline's legacy `murder` mode string is not reused in nest payloads.
- Existing machinery: `Message`/`MessageStore` (`nestlog.go`), `POST /api/nests/{id}/messages` with guardrails (`nestapi.go:postNestMessage`), must-respond responder (`respondToRequest`, `nestReplySystem`), @-addressing (`addressing.go`), Jev choice-classification pattern (`Flock.ClassifyKind` in `jev.go` + `kindQuestions`; `SystemOne` parses choice/score/noul, verified live in #7: score/noul work, noul has no confidence).
- Jev choice-vs-score guidance (`JEV_STRATEGIES.md` strategy 3): mode is discrete -> use `choice` with an escape option, band = `CROWS_JEV_THRESHOLD`.
- Guardrails (`guardrails.go`): `MurderSize` (3) is the existing team-size cap — reuse it as the conspiracy invite cap (`MaxCrowsInFlight` still bounds total).
- Contracts-first: the `mode` fields go into `EVENTS.md` in the C1 diff before the server reads them.
- `pick` (`flock.go:100`) rotates nest crows; Elder is not in `roster` but is a service role (see CHATROOM_SPEC section 6 + `personas.go` Elder) — C5 makes "Elder" addressable in nests for synthesis on request only.
## Out of scope for this epic
The expectation ledger (Epic E), assistant/COS roles (D/F), trust-gated unprompted speaking beyond what B4 already enforces, debate mode, visible budgets.
## Plan of record
- [ ] #22 — EVENTS.md + Jev mode classification (choice, header escape, record fields)
- [ ] #23 — Claim arbitration per mode (solo/split first-claim-wins, conspiracy multiple)
- [ ] #24 — Conspiracy invites N responders with per-crow lens directives
- [ ] #25 — Divergence check: restated perspective gets a review nudge, not silence
- [ ] #26 — Elder synthesis on request (addressable service role, merges the thread)
- [ ] #27 — Directed assignment holds: strangers speak only when addressed (regression + claim-author check)
- [ ] #28 — Guardrails: mode/noul calls through the flock wrapper, capped invites, logged verdicts
## Definition of done
With a scripted brain and fake Jev server: a `conspiracy` request produces 2+ distinct claims and delivers, a restated deliver is followed by a `nudge` while still stored, a `solo` request's second claim is refused with a message naming the owner, an Elder-addressed request merges the thread, and every Jev call shows up in the flight log via `ReadEvents`. All Epic B tests still pass; `go vet ./...` and `gofmt -l .` clean.
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.
Part of: docs/SCOPE.md (S1/C) Depends on: #2 (Epic B, closed), #5 (claim classes decided), #7 (Jev score/choice probe, closed)
Objective
A nest request carries a work mode —
solo,conspiracy(several crows, one task, distinct lenses) orsplit— chosen by Jev with a header escape, and the room behaves differently per mode: claims are arbitrated, conspiracies invite multiple responders with lens directives, restatements get review nudges, and an Elder-style merge closes a thread on request. After this epic, "who takes up work and how" is classification-driven, per Smokey's rule that multiple crows may take the same task for different perspectives.Context a stranger needs
murdermode string is not reused in nest payloads.Message/MessageStore(nestlog.go),POST /api/nests/{id}/messageswith guardrails (nestapi.go:postNestMessage), must-respond responder (respondToRequest,nestReplySystem), @-addressing (addressing.go), Jev choice-classification pattern (Flock.ClassifyKindinjev.go+kindQuestions;SystemOneparses choice/score/noul, verified live in #7: score/noul work, noul has no confidence).JEV_STRATEGIES.mdstrategy 3): mode is discrete -> usechoicewith an escape option, band =CROWS_JEV_THRESHOLD.guardrails.go):MurderSize(3) is the existing team-size cap — reuse it as the conspiracy invite cap (MaxCrowsInFlightstill bounds total).modefields go intoEVENTS.mdin the C1 diff before the server reads them.pick(flock.go:100) rotates nest crows; Elder is not inrosterbut is a service role (see CHATROOM_SPEC section 6 +personas.goElder) — C5 makes "Elder" addressable in nests for synthesis on request only.Out of scope for this epic
The expectation ledger (Epic E), assistant/COS roles (D/F), trust-gated unprompted speaking beyond what B4 already enforces, debate mode, visible budgets.
Plan of record
Definition of done
With a scripted brain and fake Jev server: a
conspiracyrequest produces 2+ distinct claims and delivers, a restated deliver is followed by anudgewhile still stored, asolorequest's second claim is refused with a message naming the owner, an Elder-addressed request merges the thread, and every Jev call shows up in the flight log viaReadEvents. All Epic B tests still pass;go vet ./...andgofmt -l .clean.Epic C complete: C1-C7 merged (#22-#28). #28 landed the context-aware flock slot fix (PR #35).