feat(engine): make a bulk close state what Rule 7 says must be stated

coord-done.sh was the third script that acts on pending messages and the only
one that did not learn the field. --all archives every pending message in one
call, including the ones whose sender declared it expects a reply - the exact
outcome Rule 7 exists to prevent, now reachable with no friction and no trace.

The behavior stays. The receiver keeps both terminal states by design (section
20), and a bulk close is legitimate; refusing would move a decision that belongs
to the operator into the script. What was wrong was the silence: Rule 7 requires
leaving a message unanswered to be STATED, and a command reporting only a total
made the thing that has to be stated invisible.

So --all now names the number it closed without a reply, and only then - a line
that always fires is one nobody reads. A named close stays quiet, because naming
a message is already deliberate, one message at a time.

coord-selftest 151 -> 156.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016iJoZVmU2guTEZcMghk88z
This commit is contained in:
Kjell Tore Guttormsen 2026-07-31 15:48:42 +02:00
commit 5754d67a6b
5 changed files with 78 additions and 5 deletions

View file

@ -37,6 +37,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- **`coord-done.sh --all` says how many replies it closed without sending.** It
is the third script that acts on pending messages, and the field makes a
silent bulk close possible: one command archives every pending message,
including the ones whose sender expects an answer. The behavior is unchanged
and deliberately so - the receiver keeps both terminal states, and a bulk
close is legitimate. The silence is what changed: Rule 7 requires an
unanswered message to be *stated*, and a path reporting only a total hid
exactly the thing that has to be stated. A named close stays quiet, because
naming a message is already deliberate, one message at a time.
- **`coord-count.sh` prints two integers per mailbox**, not one:
`<mailbox>\t<pending>\t<debt>`. Replacing pending *with* debt was the obvious
reading of "count debt rather than unarchived messages" and it is wrong here.