Epic: #1. Depends on: none (Smokey's decision, then a doc edit)
Goal
Write the guardrail that stops the nudge loop before any nudge code exists (founding rule). A miss posts a nudge, nudges are events, events can miss again — this must be bounded. Decide: nudges count against the nest exchange budget; the cap; what happens when a nest's budget is spent (open expectations go to the owner as a summary, per CHATROOM_SPEC.md:73).
Acceptance criteria — falsifiable checks
grep -qE 'nudge.*loop.*\[decided' CHATROOM_SPEC.md (or a new "nudge guardrail" block with a decided date and a numeric per-nest nudge cap). Fails now, passes after.
The guardrail names a concrete limit and exhaustion behavior, not prose: a line containing both a number (max nudges or exchange-budget semantics) and "summary to owner". grep -E 'nudge' CHATROOM_SPEC.md | grep -Eq '[0-9]' — fails now.
Because this is a guardrail, mirror the decision into CLAUDE.md section 5's guardrail-defaults sentence. grep -qi 'nudge' CLAUDE.md — fails now, passes after.
Needs the nest exchange budget concept to exist as a number somewhere (Epic F defines the budget field; here just fix the rule and its cap so F and E both implement it).
Epic: #1. Depends on: none (Smokey's decision, then a doc edit)
## Goal
Write the guardrail that stops the nudge loop before any nudge code exists (founding rule). A miss posts a `nudge`, nudges are events, events can miss again — this must be bounded. Decide: nudges count against the nest exchange budget; the cap; what happens when a nest's budget is spent (open expectations go to the owner as a summary, per `CHATROOM_SPEC.md:73`).
## Acceptance criteria — falsifiable checks
1. `grep -qE 'nudge.*loop.*\[decided' CHATROOM_SPEC.md` (or a new "nudge guardrail" block with a decided date and a numeric per-nest nudge cap). Fails now, passes after.
2. The guardrail names a concrete limit and exhaustion behavior, not prose: a line containing both a number (max nudges or exchange-budget semantics) and "summary to owner". `grep -E 'nudge' CHATROOM_SPEC.md | grep -Eq '[0-9]'` — fails now.
3. Because this is a guardrail, mirror the decision into `CLAUDE.md` section 5's guardrail-defaults sentence. `grep -qi 'nudge' CLAUDE.md` — fails now, passes after.
## Test command
`grep -qE 'nudge.*\[decided' CHATROOM_SPEC.md && grep -qi 'nudge' CLAUDE.md && echo PASS`
## Blockers / unknowns
Needs the nest exchange budget concept to exist as a number somewhere (Epic F defines the budget field; here just fix the rule and its cap so F and E both implement it).
Decided 2026-10-27 by Smokey: 3 loops max. A crow gets three nudges on one expectation; if there's no new content or response data from it between nudges, the harness stops nudging and folds the open expectation into the owner summary. Three is a per-expectation constant in guardrails.go (not Jev-dependent — a miss can't reset it). Recorded in CHATROOM_SPEC.md section 7 and CLAUDE.md guardrail defaults. Both test commands from the criteria now PASS.
Decided 2026-10-27 by Smokey: **3 loops max.** A crow gets three nudges on one expectation; if there's no new content or response data from it between nudges, the harness stops nudging and folds the open expectation into the owner summary. Three is a per-expectation constant in `guardrails.go` (not Jev-dependent — a miss can't reset it). Recorded in CHATROOM_SPEC.md section 7 and CLAUDE.md guardrail defaults. Both test commands from the criteria now PASS.
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: #1. Depends on: none (Smokey's decision, then a doc edit)
Goal
Write the guardrail that stops the nudge loop before any nudge code exists (founding rule). A miss posts a
nudge, nudges are events, events can miss again — this must be bounded. Decide: nudges count against the nest exchange budget; the cap; what happens when a nest's budget is spent (open expectations go to the owner as a summary, perCHATROOM_SPEC.md:73).Acceptance criteria — falsifiable checks
grep -qE 'nudge.*loop.*\[decided' CHATROOM_SPEC.md(or a new "nudge guardrail" block with a decided date and a numeric per-nest nudge cap). Fails now, passes after.grep -E 'nudge' CHATROOM_SPEC.md | grep -Eq '[0-9]'— fails now.CLAUDE.mdsection 5's guardrail-defaults sentence.grep -qi 'nudge' CLAUDE.md— fails now, passes after.Test command
grep -qE 'nudge.*\[decided' CHATROOM_SPEC.md && grep -qi 'nudge' CLAUDE.md && echo PASSBlockers / unknowns
Needs the nest exchange budget concept to exist as a number somewhere (Epic F defines the budget field; here just fix the rule and its cap so F and E both implement it).
Decided 2026-10-27 by Smokey: 3 loops max. A crow gets three nudges on one expectation; if there's no new content or response data from it between nudges, the harness stops nudging and folds the open expectation into the owner summary. Three is a per-expectation constant in
guardrails.go(not Jev-dependent — a miss can't reset it). Recorded in CHATROOM_SPEC.md section 7 and CLAUDE.md guardrail defaults. Both test commands from the criteria now PASS.