You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unread status can no longer be used as an inbox-triage filter on WhatsApp,
Slack, or Gmail. A message an operator opened and navigated away from without
replying still owed a reply, so any scan step that relied on read/unread
state to decide what needs him is wrong by design. ops-inbox, ops-rules,
and the scan tooling now classify every open item by who spoke last, never
by read state. A new unread-filter-guard.py hook hard-blocks the unread
scan calls (whatsapp_unread, mcp__slack__conversations_unreads, and any is:unread/unread_count/unread=1 filter passed to a terminal or code
tool), wired into every box's pre-tool dispatcher. tests/test-unread-filter-guard.sh
proves the block and allow shapes.
Added
ops-release now sweeps open pull requests before it cuts anything. Twice in
one day a release went out while reviewed, good external PRs sat open, and
both had to be merged by hand and the release re-cut. The new stage runs
before the version bump, so the changelog and tag cover everything that
landed. For every open PR against main — drafts and fork PRs included — it
classifies the PR, approves workflow runs that GitHub is holding at action_required, dispatches one background review agent per PR (all of them
together, so independent PRs are reviewed in parallel), and merges only what
the agent blessed and the required checks report green. skipped, neutral
and cancelled are not failures; failure, timed_out, action_required
and error are. Anything the agent would not clearly bless, anything still
red, still draft, or in conflict is reported and left open, and the release
proceeds without it. The stage is on by default, --no-sweep skips it, and --sweep-only runs the sweep and stops. --dry-run never sweeps, since a
sweep merges for real.
Fixed
A pull request from a fork looked permanently blocked. GitHub holds a fork's
workflow runs at action_required until a maintainer approves them, so the
required checks never started and mergeable_state stayed blocked forever.
The sweep approves those held runs, which is what unblocked both stalled
external contributions.