Swap the mock for a live model in the nest loop: a named crow reads the retrieved nest context and posts an in-character deliver through Flock.ask. Guardrails (budget, crow cap, timeout, flight log) apply as always.
Acceptance criteria — falsifiable tests
TestLiveCrowDeliversInNest — Given OPENROUTER_API_KEY set (else t.Skip()), when a request is posted @-addressing one crow, then within the crow timeout the log contains a crow-authored deliver whose to is the requester, author equals the addressed crow, and the flight log records one crow flight. Red now, green after.
A guard test asserts the call went through Flock.ask (not a raw brain): the flight log entry exists with the crow name. grep/log assertion, deterministic.
Test command
go test -race -run 'TestLiveCrowDeliversInNest' ./... (skips without a key)
Blockers / unknowns
Free-model quality is uneven and upstream 429s happen (CLAUDE.md section 7); a 429 must be handled as a crow flight failure, not a crash.
Epic: #2. Depends on: #12
## Goal
Swap the mock for a live model in the nest loop: a named crow reads the retrieved nest context and posts an in-character `deliver` through `Flock.ask`. Guardrails (budget, crow cap, timeout, flight log) apply as always.
## Acceptance criteria — falsifiable tests
1. `TestLiveCrowDeliversInNest` — Given `OPENROUTER_API_KEY` set (else `t.Skip()`), when a request is posted @-addressing one crow, then within the crow timeout the log contains a crow-authored `deliver` whose `to` is the requester, `author` equals the addressed crow, and the flight log records one crow flight. Red now, green after.
2. A guard test asserts the call went through `Flock.ask` (not a raw brain): the flight log entry exists with the crow name. `grep`/log assertion, deterministic.
## Test command
`go test -race -run 'TestLiveCrowDeliversInNest' ./...` (skips without a key)
## Blockers / unknowns
Free-model quality is uneven and upstream 429s happen (CLAUDE.md section 7); a 429 must be handled as a crow flight failure, not a crash.
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.
Epic: #2. Depends on: #12
Goal
Swap the mock for a live model in the nest loop: a named crow reads the retrieved nest context and posts an in-character
deliverthroughFlock.ask. Guardrails (budget, crow cap, timeout, flight log) apply as always.Acceptance criteria — falsifiable tests
TestLiveCrowDeliversInNest— GivenOPENROUTER_API_KEYset (elset.Skip()), when a request is posted @-addressing one crow, then within the crow timeout the log contains a crow-authoreddeliverwhosetois the requester,authorequals the addressed crow, and the flight log records one crow flight. Red now, green after.Flock.ask(not a raw brain): the flight log entry exists with the crow name.grep/log assertion, deterministic.Test command
go test -race -run 'TestLiveCrowDeliversInNest' ./...(skips without a key)Blockers / unknowns
Free-model quality is uneven and upstream 429s happen (CLAUDE.md section 7); a 429 must be handled as a crow flight failure, not a crash.