repo-mailbox/scripts
Kjell Tore Guttormsen 316b8acdd2 feat(engine): retire a broadcast with coord-send --retract
Nothing could remove a message from _broadcast/inbox/. coord-done is
directed-only and never touches the broadcast queue, so the backlog could
only grow: every new repo received the entire standing history at its first
session, including announcements that had since become false.

--retract <filename> archives the message into _broadcast/archive/, so no
future repo is served it. Three deliberate limits, all pinned by tests:

- Un-send, not recall. Repos that already received it keep it;
  _broadcast/seen/ is delivery history and is left untouched.
- Only the sender may retract (from: must match the repo identity). --from
  overrides it, as everywhere else in the engine, which makes the check an
  accident guard rather than a security boundary.
- Nothing is deleted, mirroring coord-done. Retracting twice is a no-op.

The branch runs before every send-side validation and before the stdin body
read, since a retract carries no subject and no body.

Selftest 70 -> 82 (new section 19). Also fixes two README defects the
feature exposed: the install command still named coord@ after the v0.3.0
rename, and the docs advised pruning _broadcast/inbox/ by hand, which
contradicted the rule that the script owns mailbox files.
2026-07-25 15:11:47 +02:00
..
coord-done.sh feat(engine): harden mailbox CLIs for v0.2.0 2026-07-24 19:57:40 +02:00
coord-inbox.sh feat(engine): warn on unknown coord-inbox arguments 2026-07-25 06:39:21 +02:00
coord-selftest.sh feat(engine): retire a broadcast with coord-send --retract 2026-07-25 15:11:47 +02:00
coord-send.sh feat(engine): retire a broadcast with coord-send --retract 2026-07-25 15:11:47 +02:00