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
On a Group's Mail view, an operator can currently see unread Mail per Actor but has no single read that answers "which Actors still have direct Mail awaiting them past an age cutoff, how many, and where is the oldest?"
The proposed primitive is one Group-scoped read, mail_overdue_summary, taking group_id and required positive after_seconds, returning per-Actor awaiting_count, overdue_count, oldest_overdue_at, oldest_source_event_id, unaged_count, plus evaluated_at. It reuses the existing awaiting predicate (read cursor, reply, accepted/ambiguous delivery) and NoticeState source resolution, so "awaiting" means the same thing as production notices. It does not deliver, page, or change state. Overdue age starts at the Mail source timestamp. Rows are only Actors with an overdue or unaged item; all current non-internal Actors including stopped/disabled are eligible. Access follows existing Group transport and inbox authorization; a peer's own-inbox permission does not grant other Actors' rows. No background sampler, no new permission, no cross-Group aggregation.
Thank you to the maintainer for the #166 direction (passive Group observation) and #165 (production NoticeState path). Related: #162, #171. We will not ask cccc to implement escalation, reminders, or foreman policy in core.
How we checked
On our staging instance (cccc 0.4.44; KVM guest, 8 vCPU Intel Skylake, 15 GiB RAM, Debian 13), with real Group data and a 900-second cutoff:
Three real direct Mail items were unread, unreplied and had no accepted or ambiguous delivery. They were 7 to 11 days old, and one was addressed to a stopped Actor.
inbox_peek lists them one recipient at a time. The Mail view shows unread badges and a filter.
Nothing gives the Group-level answer: there is no caller cutoff, no per-Actor overdue count and no oldest item.
Thanks for narrowing this to the passive, Group-scoped read discussed in #166, and for checking it against real waiting Mail. This looks useful; a PR within that scope would be welcome.
Please keep the existing user/foreman permission for a Group-wide Inbox view, current-generation awaiting semantics, and eligibility for stopped and disabled Actors. Age should come from the original Mail timestamp, independently of notice delivery or Actor restarts.
Please reuse the existing incremental projection, without adding a full-history scan on each poll, notifications, or background sampling. IPC and CLI are enough for this external-tool use case; no default MCP tool is needed.
I would leave out unaged_count for now unless you have a concrete source-timestamp case it needs to represent. Please define the cutoff boundary and exercise the real daemon path for permissions, read/replied/delivered Mail, stopped Actors, and generation changes. Tests should distinguish delivery of the Mail itself from delivery of its notice. The IPC standard should document the resulting contract.
Escalation, reminders, and foreman policy can stay outside core, as you propose.
Activity
ChesterRa commentedon Oct 27, 2026
Thanks for narrowing this to the passive, Group-scoped read discussed in #166, and for checking it against real waiting Mail. This looks useful; a PR within that scope would be welcome.
Please keep the existing user/foreman permission for a Group-wide Inbox view, current-generation awaiting semantics, and eligibility for stopped and disabled Actors. Age should come from the original Mail timestamp, independently of notice delivery or Actor restarts.
Please reuse the existing incremental projection, without adding a full-history scan on each poll, notifications, or background sampling. IPC and CLI are enough for this external-tool use case; no default MCP tool is needed.
I would leave out
unaged_countfor now unless you have a concrete source-timestamp case it needs to represent. Please define the cutoff boundary and exercise the real daemon path for permissions, read/replied/delivered Mail, stopped Actors, and generation changes. Tests should distinguish delivery of the Mail itself from delivery of its notice. The IPC standard should document the resulting contract.Escalation, reminders, and foreman policy can stay outside core, as you propose.
chriscoveries commentedon Nov 3, 2026
Implemented in #183 (merged 2026-10-30, released in v0.4.46). Closing. Thank you for scoping it so clearly.