Epic E: Orchestration — Boss + Sentry watchdog #37

Closed
opened 2026-10-28 13:42:45 +00:00 by jacisjake · 1 comment
jacisjake commented 2026-10-28 13:42:45 +00:00 (Migrated from github.com)

Part of: docs/SCOPE.md#S6 Depends on: Epic D (assistant epic; ask_owner mechanism)

Objective

Boss (Chief of Staff crow) orchestrates the flock from inside the chatroom: spins up new crows (name, persona, starting trust), creates nests and assigns members. The Sentry becomes the nest watchdog: it acts on Jev verdicts above high bands plus harness guardrail hits, quarantines an aberrant crow with a flag message, and escalates an ask_owner for reinstate-or-retain — fail safe, one flag per crow per expectation, blind to owner messages.

Context a stranger needs

  • Names [decided 2026-10-28]: COS crow = Boss. Watchdog = the existing Sentry persona (personas.go, in rosterOrder); spec §6 "Name note".
  • Service-role pattern: nestapi.go:31 serviceRoles, trigger switch ~187, respondElder ~349. Epic D will have added Quill the same way (respondQuill in a quill file).
  • ask_owner + fail-safe resolution lands with Epic D (task D4) — E4 builds on it. flag is already in the EVENTS.md kind table (lines 46, 88: crows may not post it; Sentry only).
  • Spun-up crows need a registry that outlives the static persona list: personas are code (personas.go), dynamic crows must be data — new store next to ledger/nests in .crows/ (see ledger.go/nests.go for the JSON persistence pattern), plus a MaxSpunCrows cap in guardrails.go.
  • Jev check questions follow JEV_STRATEGIES.md strategy 8 (answers_request, states_fact_without_source, contradicts_earlier as noul), strategy 4 three bands (noul high ≥ 0.7 acts; reuse CROWS_JEV_THRESHOLD), and the guarded-call pattern in jev.go (Flock.ClassifyDivergence is the closest existing example, with Flock.reserve from #28).
  • Quarantine state belongs on the crow registry record; enforcement in POST validation (nestapi.go claim/deliver path) and in the unprompted-speaking selectors (respondOpenRequest, inviteCount paths — see trustgate_test.go for the gating pattern).
  • Trust: ledger.go records per crow|tasktype; Sentry's own flags earn trust under task type triage/watch (CHATROOM_SPEC §6 bounds; CLAUDE.md section 3 pattern triage/<type>).

Out of scope for this epic

Debate mode (spec §8), visible budgets (spec §9), UI changes for any of it — those are Epic F. Idle-crow retirement (regulation) is deferred: spin-down only via quarantine decisions this round.

Plan of record

  • #42 — E1: Boss role + spin_up crow registry with cap
  • #43 — E2: Boss creates nests and assigns members
  • #44 — E3: Sentry watchdog detection + quarantine enforcement
  • #45 — E4: Quarantine escalation via ask_owner + triage/watch trust

Definition of done

Mock-brain demo: owner asks Boss for a new crow "Ash" and a nest; Ash joins, delivers an unsourced fabrication; the fake Jev scores it above band; a flag posts, Ash's next claim is refused 403, an ask_owner opens; owner's exact "reinstate Ash" lifts it, anything else does not; Sentry's flag shows up in the ledger as Sentry|triage/watch.

Part of: docs/SCOPE.md#S6 Depends on: Epic D (assistant epic; ask_owner mechanism) ## Objective Boss (Chief of Staff crow) orchestrates the flock from inside the chatroom: spins up new crows (name, persona, starting trust), creates nests and assigns members. The Sentry becomes the nest watchdog: it acts on Jev verdicts above high bands plus harness guardrail hits, quarantines an aberrant crow with a `flag` message, and escalates an `ask_owner` for reinstate-or-retain — fail safe, one flag per crow per expectation, blind to owner messages. ## Context a stranger needs - Names [decided 2026-10-28]: COS crow = **Boss**. Watchdog = the existing Sentry persona (`personas.go`, in `rosterOrder`); spec §6 "Name note". - Service-role pattern: `nestapi.go:31` `serviceRoles`, trigger switch ~187, `respondElder` ~349. Epic D will have added Quill the same way (`respondQuill` in a quill file). - `ask_owner` + fail-safe resolution lands with Epic D (task D4) — E4 builds on it. `flag` is already in the EVENTS.md kind table (lines 46, 88: crows may not post it; Sentry only). - Spun-up crows need a registry that outlives the static persona list: personas are code (`personas.go`), dynamic crows must be data — new store next to ledger/nests in `.crows/` (see `ledger.go`/`nests.go` for the JSON persistence pattern), plus a `MaxSpunCrows` cap in `guardrails.go`. - Jev check questions follow `JEV_STRATEGIES.md` strategy 8 (`answers_request`, `states_fact_without_source`, `contradicts_earlier` as `noul`), strategy 4 three bands (noul high ≥ 0.7 acts; reuse `CROWS_JEV_THRESHOLD`), and the guarded-call pattern in `jev.go` (`Flock.ClassifyDivergence` is the closest existing example, with `Flock.reserve` from #28). - Quarantine state belongs on the crow registry record; enforcement in POST validation (`nestapi.go` claim/deliver path) and in the unprompted-speaking selectors (`respondOpenRequest`, `inviteCount` paths — see trustgate_test.go for the gating pattern). - Trust: `ledger.go` records per `crow|tasktype`; Sentry's own flags earn trust under task type `triage/watch` (CHATROOM_SPEC §6 bounds; CLAUDE.md section 3 pattern `triage/<type>`). ## Out of scope for this epic Debate mode (spec §8), visible budgets (spec §9), UI changes for any of it — those are Epic F. Idle-crow retirement (regulation) is deferred: spin-down only via quarantine decisions this round. ## Plan of record - [ ] #42 — E1: Boss role + spin_up crow registry with cap - [ ] #43 — E2: Boss creates nests and assigns members - [ ] #44 — E3: Sentry watchdog detection + quarantine enforcement - [ ] #45 — E4: Quarantine escalation via ask_owner + triage/watch trust ## Definition of done Mock-brain demo: owner asks Boss for a new crow "Ash" and a nest; Ash joins, delivers an unsourced fabrication; the fake Jev scores it above band; a `flag` posts, Ash's next claim is refused 403, an `ask_owner` opens; owner's exact "reinstate Ash" lifts it, anything else does not; Sentry's flag shows up in the ledger as `Sentry|triage/watch`.
jacisjake commented 2026-10-28 15:22:05 +00:00 (Migrated from github.com)

Definition of done met on main: Boss spins Ash into the registry (TestBossSpinUpCreatesCrow #42) and creates a nest with it (TestBossCreatesNest #43); an unsourced fabrication gets flagged + quarantined 403 (TestSentryQuarantinesFabrication #44); the ask_owner escalates, exact 'reinstate Ash' lifts it, anything else keeps it, 'retire' removes (TestQuarantineOpensAskOwner/TestReinstateOnlyOnExactYes/TestRetireRemovesCrow #45); Sentry earns triage/watch only on owner calls (TestWatchTrustMoves #45). Debate + visible budgets deferred to Epic F.

Definition of done met on main: Boss spins Ash into the registry (TestBossSpinUpCreatesCrow #42) and creates a nest with it (TestBossCreatesNest #43); an unsourced fabrication gets flagged + quarantined 403 (TestSentryQuarantinesFabrication #44); the ask_owner escalates, exact 'reinstate Ash' lifts it, anything else keeps it, 'retire' removes (TestQuarantineOpensAskOwner/TestReinstateOnlyOnExactYes/TestRetireRemovesCrow #45); Sentry earns triage/watch only on owner calls (TestWatchTrustMoves #45). Debate + visible budgets deferred to Epic F.
Sign in to join this conversation.