<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/docs/specs/2026-07-20-silent-until-signal-monitors-spec.org, branch main</title>
<subtitle>Claude Code skills, rules, and language bundles
</subtitle>
<id>https://git.cjennings.net/rulesets/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/rulesets/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/'/>
<updated>2026-07-20T18:39:29+00:00</updated>
<entry>
<title>feat: extend the silent-until-signal heartbeat to the two MCP monitor loops</title>
<updated>2026-07-20T18:39:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T18:39:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=0e9958abfbe97540b348b2118a863f7995e73b9e'/>
<id>urn:sha1:0e9958abfbe97540b348b2118a863f7995e73b9e</id>
<content type='text'>
Auto triage-intake and auto inbox-zero now collapse an empty check to a single "&lt;workflow&gt; at HH:MM: nothing" line, matching the sentry quiet-fire heartbeat from Phase 1. Detection stays in-session, so the MCP-auth sources are scanned in full and only the output collapses. Inbox already had an acknowledge-only-on-empty rule, now unified to the standard format; triage's three-section sweep output gains the empty-sweep collapse.

Completes the silent-until-signal spec (Phases 2-5): the spec is the shared-policy home the three workflows reference, and a manual-testing entry covers the live-loop verification. Spec flipped to IMPLEMENTED.
</content>
</entry>
<entry>
<title>feat(sentry): a quiet fire collapses to a one-line heartbeat</title>
<updated>2026-07-20T17:30:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T17:30:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=0767af804b980c23fdd759f65c0f50b499fb1bbe'/>
<id>urn:sha1:0767af804b980c23fdd759f65c0f50b499fb1bbe</id>
<content type='text'>
A sentry fire whose passes all probe-skip or no-op now writes a single "sentry at HH:MM: nothing" line instead of a full per-pass digest block. A fire that runs or queues anything writes the full digest as before. This is Phase 1 of the silent-until-signal policy. The live trial's fires 3-8 were walls of no-op digests, the noise this removes.

The "no silent skip" discipline is reconciled, not broken: inside a working fire every pass still writes its ran/skipped line, and a quiet fire's heartbeat is the explicit "nothing to do" record rather than a hidden skip.
</content>
</entry>
<entry>
<title>docs: spec the silent-until-signal monitor policy</title>
<updated>2026-07-20T17:16:33+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T17:16:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=986d6caeeaba6e4ab2f1e6f5e760ce841c922259'/>
<id>urn:sha1:986d6caeeaba6e4ab2f1e6f5e760ce841c922259</id>
<content type='text'>
An in-session monitor loop (sentry, auto triage-intake, auto inbox-zero) fires the model every interval and narrates a full turn even when nothing changed, so a session fills with quiet-fire noise. The spec settles the fix as a policy, not a watcher: detect first, and on an empty check collapse to one labelled heartbeat line, spending a full turn only on a real item. Keeping detection in-session dissolves the MCP-auth split (triage's sources need the session's auth, which a detached watcher can't reach), so it applies uniformly across all three loops. DRAFT, decisions resolved live. Links a [#B] build task.
</content>
</entry>
</feed>
