spec: nudge loop guard decided — 3 nudges per expectation with no new content, then summarize to owner (#4)

This commit is contained in:
Smokey committed 2026-10-27 23:45:29 -06:00
1 parent 3d525fb7c0
commit 51cf9ddec6
2 files changed
+2 -1

No files matched your search

+1
View File
@@ -84,6 +84,7 @@ Jev classifies and scores; it isn't an agent. The harness owns the ledger and th
- **Check:** on each new event and on a short timer, Jev scores open expectations against the room log (met, missed, or pending, with confidence). - **Check:** on each new event and on a short timer, Jev scores open expectations against the room log (met, missed, or pending, with confidence).
- **Trigger on a miss:** the harness hands the verdict to the responsible crow as a `nudge` trigger. The crow's model decides how to proceed. - **Trigger on a miss:** the harness hands the verdict to the responsible crow as a `nudge` trigger. The crow's model decides how to proceed.
- **Budget:** each nudge counts against the nest's exchange budget. When the budget runs out, open expectations go to the owner as a summary instead of more nudges. - **Budget:** each nudge counts against the nest's exchange budget. When the budget runs out, open expectations go to the owner as a summary instead of more nudges.
- **Nudge loop guard** [decided 2026-10-27]: **three loops max.** When a crow has received three nudges on one expectation with no new content or response data from it in between, the harness stops nudging and sends the open expectation to the owner in the summary. Three is a per-expectation constant in `guardrails.go`, counted by the harness, so the guard holds even if Jev keeps calling the expectation missed.
Initial checks (from testing): promise kept, rounds completed, turn order (debate only), single owner, claims sourced, correction handled once, role adherence, requester gets an answer. Initial checks (from testing): promise kept, rounds completed, turn order (debate only), single owner, claims sourced, correction handled once, role adherence, requester gets an answer.
+1 -1
View File
@@ -106,7 +106,7 @@ UI development: run the server, then `cd ui && npm run dev` (Vite proxies `/api`
`.env` keys (names only; never print values): `OPENROUTER_API_KEY` (present), `TYPESAFE_API_KEY` (present), optional `ANTHROPIC_API_KEY`, `CROWS_PROVIDER`, `CROWS_MODEL`, `CROWS_JEV_MODEL` (default `jev-latest`), `CROWS_JEV_THRESHOLD` (default 0.7). Inspect safely with: `sed -n 's/^\([A-Z_]*\)=.*/\1/p' .env`. `.env` keys (names only; never print values): `OPENROUTER_API_KEY` (present), `TYPESAFE_API_KEY` (present), optional `ANTHROPIC_API_KEY`, `CROWS_PROVIDER`, `CROWS_MODEL`, `CROWS_JEV_MODEL` (default `jev-latest`), `CROWS_JEV_THRESHOLD` (default 0.7). Inspect safely with: `sed -n 's/^\([A-Z_]*\)=.*/\1/p' .env`.
Guardrail defaults (`guardrails.go`): 5 crows in flight, murder of 3, 20 items per list, 2,000 characters per item, 4 subtasks, 20,000 tokens per item, 100,000 per list, 60-second crow timeout, promote after 10, 5 requests per minute, cooldown 30 seconds doubling to 1 hour, 2 banter calls per list. Guardrail defaults (`guardrails.go`): 5 crows in flight, murder of 3, 20 items per list, 2,000 characters per item, 4 subtasks, 20,000 tokens per item, 100,000 per list, 60-second crow timeout, promote after 10, 5 requests per minute, cooldown 30 seconds doubling to 1 hour, 2 banter calls per list, and (chatroom) a **3-nudge loop guard per expectation** — after three nudges with no new content from the crow, the harness stops and summarizes to the owner (CHATROOM_SPEC.md section 7).
## 6. Verified state (2026-10-27) ## 6. Verified state (2026-10-27)