Commit Graph
37 Commits
Author SHA1 Message Date
Smokey ba5dbbc7ae test(nest): red for #10 — post/get endpoints, event-driven trigger, SSE stream 2026-10-28 03:34:37 -06:00
Smokey 027eb34f6a feat(nestlog): append-only message store with JSON Lines persistence (#9) 2026-10-28 00:02:39 -06:00
Smokey 996660b3db test(nestlog): red for #9 — append order, replay, persistence 2026-10-28 00:02:39 -06:00
jacisjake 798052a9a6 Merge pull request #14 from jacisjake/task/7-jev-score-noul-probe
(#7) Probe Jev score/noul; escape option on mode
2026-10-27 23:57:44 -06:00
Smokey 5cfb038e7d spec: repeated misses never touch trust; surfaced via the guard summary (section 13 q3 closed) 2026-10-27 23:55:26 -06:00
Smokey ab9bc53ccb spec: claim classes decided — solo/split first-claim-wins, conspiracy expects multiple claims (#5) 2026-10-27 23:51:59 -06:00
Smokey e0c6e8b638 spec: message-kind tagging decided — Jev first, crow header fallback (#3); EVENTS.md nest section stub 2026-10-27 23:50:48 -06:00
Smokey 51cf9ddec6 spec: nudge loop guard decided — 3 nudges per expectation with no new content, then summarize to owner (#4) 2026-10-27 23:45:29 -06:00
Smokey 2637b87ac8 docs(jev): record probe results — score/noul confirmed, noul has no confidence (#7) 2026-10-27 23:42:40 -06:00
Smokey ac95ab1480 feat(jev): SystemOne parser for choice/score/noul, escape option on mode (#7) 2026-10-27 23:42:10 -06:00
Smokey 3b573cea97 test(jev): red for #7 — score/noul probe, escape option, mixed-answer parse 2026-10-27 23:42:00 -06:00
Smokey 3d525fb7c0 spec: Sentry reborn as nest watchdog (quarantine, then escalate); flag message kind 2026-10-27 23:36:39 -06:00
Smokey 4a1f0c2652 docs: conspiracy + 'so many crows' allusion terminology; ignore .scratch 2026-10-27 23:24:07 -06:00
Smokey fbafcce919 docs: SCOPE.md for the chatroom pivot (epic root citation) 2026-10-27 23:13:50 -06:00
Smokey 5cbff38ea5 Approval buttons read Proceed/Deny 2026-10-27 23:07:33 -06:00
Smokey 5ea1a7a3a2 Chatroom pivot: spec, black-box notes, Jev strategies; roadmap rewritten 2026-10-27 23:07:33 -06:00
Smokey fbf9fe67a6 Per-crow banter voice system: three-layer prompt (memory, voice, line) 2026-10-27 23:07:33 -06:00
SmokeyandClaude Opus 5.5 017d11cd99 CLAUDE.md: handoff for the next agent
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 17:37:27 -06:00
SmokeyandClaude Opus 5.5 a131f8dc2a Remove a stray test screenshot
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 17:36:16 -06:00
SmokeyandClaude Opus 5.5 57e9fc2fd2 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
2026-10-27 17:31:53 -06:00
SmokeyandClaude Opus 5.5 4499291231 Jev classifier in tandem with the LLM Sentry
- Jev (TypeSafe, direct) triages mode and task type with confidence
- Its call stands at >= 70% on both and no split; otherwise the LLM
  Sentry decides (unsure, split needs subtasks, or Jev down)
- Jev flights obey the same budget, flock cap, timeout and log
- Tests for every path; flight log is nil-safe
- start.command reads TYPESAFE_API_KEY and threshold from .env

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 17:13:48 -06:00
SmokeyandClaude Opus 5.5 73cf298fee OpenRouter crows; log which model answered each flight
- ChatBrain speaks OpenAI-style chat completions (OpenRouter now)
- CROWS_PROVIDER picks anthropic or openrouter; default model
  openrouter/free; CROWS_MODEL overrides
- Flight log records the model that actually answered
- Token budgets fall back to a length estimate if usage is missing
- start.command reads either key from .env

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 16:23:59 -06:00
SmokeyandClaude Opus 5.5 69ecabcb8c start.command: real crows from a local .env key; --mock for offline
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 15:54:26 -06:00
SmokeyandClaude Opus 5.5 2d85cab716 Nests: team rooms with core crows and borrowing
- Server: nests API, persistence, core-first picking, borrowed flag
  (built by the backend agent against EVENTS.md; tests pass with -race)
- UI: nests in the sidebar, one feed per nest, header shows the core
  team, New nest dialog, borrowed crows labeled, per-nest waiting count
- start.command: one-click local server in controlled mode (mock crows,
  localhost only, state in .crows/)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 13:45:04 -06:00
SmokeyandClaude Opus 5.5 e9f20349a1 EVENTS.md: nests contract
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:43:22 -06:00
SmokeyandClaude Opus 5.5 2f56bcb5fb More breathing room in tiles and the feed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:42:46 -06:00
SmokeyandClaude Opus 5.5 68ab73f957 Flock as list tiles with latest updates
- Each crow is a tile: live avatar, name, latest update, time;
  the most recently updated tile moves to the top
- Red "N waiting" count per tile tracks open questions separately
  from the latest update, so a newer update never hides one
- Phones: no crow strip; two tabs (# todo, Flock) with a count of
  crows waiting on you

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:41:22 -06:00
SmokeyandClaude Opus 5.5 0733ba1d9c Chat layout: roster, channel feed, composer
- The flock is a member list with live status (perched, flying,
  waiting on you, grounded); a scrolling strip on phones
- The Sentry and crows post into one channel; approvals are inline
  buttons on their messages; verdicts show as reactions
- "Who's flying" line above the composer; Ctrl/Cmd+Enter to send
- Consecutive messages from one author group under one name
- RIVE_CONTRACT.md: roster size and still message avatars

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:36:31 -06:00
SmokeyandClaude Opus 5.5 d0ae4fd1c0 Perch layout: crows stand on the branch
- Each crow stands on its own branch segment; segments join into one
  line per row, names sit under it in one style
- Fixed headroom row for "?" and sparkles, centered over each crow
- Trust star gets its own corner, clear of the beak
- Dazed crows fade in place instead of tipping out of line
- Five crows per row on a phone; tighter rows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:31:17 -06:00
SmokeyandClaude Opus 5.5 feb3bb1735 Crows keep their size; sparkles mean celebration only
- No animation scales a crow: reactions use hops, tilts and spins
- Waiting is a plain "?" again; dazed crows tip and fade with no
  circling stars (they read as drunk)
- RIVE_CONTRACT.md updated to match

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:29:04 -06:00
SmokeyandClaude Opus 5.5 d5f12f2878 Drop UI strokes: shapes come from fill and stipple
- No pen line on the text box, buttons, banner or toast; no dashed
  lines anywhere
- Focus: the stipple shadow deepens; buttons also underline their
  label on keyboard focus
- Secondary button sits on a paper-tone fill

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:26:57 -06:00
SmokeyandClaude Opus 5.5 da3cd728a8 Clean lines, stippled disabled state, flash sparkles
- Consistent 6px corners instead of hand-wobble edges
- Disabled buttons: light stipple fill with a dashed line, not gray
- Drop the stipple underline under the title
- Four-point stars and broken crosses for waiting, level-up and
  dazed states, after the reference flash sheet
- Fix: trust badge was sized by the crow-art rule and filled the
  whole crow once a crow earned trust

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:14:07 -06:00
SmokeyandClaude Opus 5.5 50149e3d04 Outline-free cards and subtler stipple
- Cards drop the pen line; separation comes from a soft stippled
  shadow that deepens while a card is waiting on you
- Finer dots, layered at two unrelated tile sizes so the repeat
  never shows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 12:03:32 -06:00
SmokeyandClaude Opus 5.5 1008683b1b Pen-and-ink art direction with stipple shading
- Cream paper, hand-drawn ink borders, engraving-era type
  (IM Fell English SC, EB Garamond)
- Stipple shadows from a seamless, randomly dotted tile (fixed seed)
- Trust badges are ink stars; Sentry and Elder marked by nameplate
- Smokey's crow art unchanged

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 11:58:32 -06:00
SmokeyandClaude Opus 5.5 a89157803b Add web UI with Smokey's crow as the stand-in mascot
- ui/: Vite + plain TypeScript, builds into ./web for `crows serve`
- CrowView mirrors CrowModel in RIVE_CONTRACT.md (pose, trust,
  reactions) so the .riv can replace the SVG later
- Event handling follows the contract's mapping table; server text
  is only ever inserted as text
- Prank: toast plus a send-button cooldown countdown
- art/crow.svg: source art for Rive import

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 11:44:54 -06:00
SmokeyandClaude Opus 5.5 940c74672a Add web server, event stream, and Rive contract
- crows serve: HTTP API, Server-Sent Events per list, web approvals
  with a 10-minute fail-safe timeout; localhost only by default
- Shared pipeline for command line and server; trust.changed events
- EVENTS.md: server/UI contract; RIVE_CONTRACT.md: data-binding spec
  for the animator (one Crow artboard for v1)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 08:31:27 -06:00
SmokeyandClaude Opus 5.5 7ae7f670ff So Many Crows v1: Sentry triage, crows, guardrails, trust ledger
Go command-line tool. Sentry classifies each todo item as solo, split,
or murder; text-only crows fly under budget, timeout, and flock caps;
trust is earned per crow and per task type; abusive requesters get a
mild, fading cooldown. Runs offline with a mock brain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 08:16:58 -06:00