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
This commit is contained in:
SmokeyandClaude Opus 5.5 committed 2026-10-27 13:45:04 -06:00
1 parent e9f20349a1
commit 2d85cab716
14 files changed
+782 -62

No files matched your search

+5 -1
View File
@@ -93,10 +93,14 @@ func newTestServer(t *testing.T, g Guardrails, timeout time.Duration) (*httptest
t.Fatal(err)
}
t.Cleanup(func() { flog.Close() })
nests, err := LoadNests(filepath.Join(dir, "nests.json"))
if err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithCancel(context.Background())
approver := NewWebApprover(timeout)
p := &Pipeline{Flock: NewFlock(MockBrain{}, g, flog), Ledger: ledger, Log: flog, G: g, Approver: approver}
s := NewServer(ctx, p, approver)
s := NewServer(ctx, p, approver, nests)
s.beat = 20 * time.Millisecond
ts := httptest.NewServer(s.Handler())
t.Cleanup(func() { cancel(); ts.Close() })