Crow personas and generated banter

- personas.go: backstory, prompt policy and output policy per crow;
  Hugin and Munin grounded in Grimnismal 20 and Gylfaginning 38;
  every working crow also follows a common output policy
- Personas go into each crow's instructions; Sentry keeps JSON-only
- banter.go: retrieve backstory, relationships and recent flock
  memory, then the speaking crow generates one line in character;
  max 2 per list against the list budget, never blocks work,
  unusable lines dropped
- crow.banter event, GET /api/crows, `crows personas` -> PERSONAS.md
- UI: epithets on tiles and messages, banter as quiet asides

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
This commit is contained in:
SmokeyandClaude Opus 5.5 committed 2026-10-27 17:31:53 -06:00
1 parent 4499291231
commit 57e9fc2fd2
13 files changed
+824 -8

No files matched your search

+4 -1
View File
@@ -28,6 +28,8 @@ func main() {
cmdTrust()
case "log":
cmdLog(os.Args[2:])
case "personas":
fmt.Print(personaSheet())
default:
usage()
}
@@ -39,7 +41,8 @@ func usage() {
crows run <todo.txt> [-as name] [-nest id] hand the flock a todo list
crows serve [-addr 127.0.0.1:8080] run the web server (API + SSE)
crows trust show trust ledger
crows log [-n 20] show recent flight log entries`)
crows log [-n 20] show recent flight log entries
crows personas print the flock's persona sheet (Markdown)`)
os.Exit(2)
}