72 lines
3.5 KiB
Markdown
72 lines
3.5 KiB
Markdown
---
|
|
status: active
|
|
initiated: 2026-10-04
|
|
touches:
|
|
- 04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md
|
|
- 04-ISSUES/229-a-rollout-cannot-be-followed-through-the-meshs-tools/00-report.md
|
|
- 04-ISSUES/230-a-host-that-hands-over-to-a-newer-one-loses-its-report-and-a-plan-waits-for-ever/00-report.md
|
|
- 04-ISSUES/233-a-host-without-its-package-managers-configuration-refuses-the-declaration-that-would-restore-it/00-report.md
|
|
- 02-DECISIONS/0126-a-module-declares-its-own-seats.md
|
|
- 02-DECISIONS/0208-the-graphical-session-is-one-module-per-piece-on-the-meshs-seats.md
|
|
- 02-DECISIONS/0210-a-tools-configuration-is-its-seat-holders-and-every-other-module-extends-it-through-the-seat.md
|
|
- 03-DESIGN/01-to-be/32-what-a-module-declares.md
|
|
became: []
|
|
---
|
|
|
|
# 028 — The mesh's output channel
|
|
|
|
## What
|
|
|
|
How the mesh tells its operator what it noticed. The operator's framing: sending notifications
|
|
is **an output channel for the mesh**. The mesh already knows when a machine stops answering, when
|
|
a failure repeats and will not fix itself, when a rollout waits for ever. Today it keeps that to
|
|
itself until someone asks.
|
|
|
|
The effort looks at:
|
|
|
|
- **the seat:** one, held once for the mesh, that every other part uses to say something to the
|
|
operator;
|
|
- **the channels**, each a module: a desktop notification on the machine the operator is at,
|
|
**Telegram**, a phone push service, chat, mail and others (see [02](02-the-channels.md));
|
|
- **the routing**, by severity and by where the operator is;
|
|
- **the life of a message:** deduplicated while it holds, resolved when it stops, acknowledged or
|
|
silenced by the operator;
|
|
- **the watcher's watcher:** who tells the operator when the parts that would tell them are the
|
|
ones that failed.
|
|
|
|
## Why
|
|
|
|
[Issue 187](../../04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md) is the
|
|
class: *the mesh tells nobody when it stops working*. [01](01-what-the-mesh-already-knows.md)
|
|
counts it.
|
|
- 15 of the 236 issue reports say the fault was found because a person happened to look.
|
|
- 74 describe something failing silently.
|
|
|
|
On the day this effort opened, the mesh knew three things and told nobody:
|
|
- a workstation had refused every declaration for ninety minutes;
|
|
- the same workstation had been out of touch for ten minutes after an upgrade;
|
|
- one failure on the laptop had repeated thirteen times.
|
|
|
|
Every one of them was in `status`, for whoever asked.
|
|
|
|
The pieces exist. [To-be 32](../../03-DESIGN/01-to-be/32-what-a-module-declares.md) already uses a
|
|
`telegram-sender` seat as its worked example of a work queue with retention. ADR 0208 made a
|
|
machine's desktop notifier a node seat with a `send` verb. What is missing is a seat that speaks
|
|
for the mesh, sources that call it, and channels that deliver.
|
|
|
|
## What it touches
|
|
|
|
- **The controller**, which would become the first source of what it already computes for `status`.
|
|
- **The node-notifier seat**, which would become one channel among several.
|
|
- **Issues 187, 229, 230 and 233**, each of which ends in "and nothing said so".
|
|
- **ADR 0210**, because a channel extends the output seat through a contribution, and therefore
|
|
depends on it.
|
|
|
|
## Documents
|
|
|
|
1. [What the mesh already knows](01-what-the-mesh-already-knows.md): the evidence, and the events
|
|
that exist.
|
|
2. [The channels](02-the-channels.md): the candidates, Telegram first, weighed on the same questions.
|
|
3. [Open questions](03-open-questions.md): the seat, routing, life of a message, the watcher's
|
|
watcher, what may leave the mesh.
|