Name the channel's failure and standing as intake events, and where the router reads each kind's capabilities
This commit is contained in:
+4
-1
@@ -166,7 +166,7 @@ state bucket, the EVENTS stream). `<asker>` is the asking module's name; `<kind>
|
||||
| the operator's identities | the router's bucket `identities`, key `<kind>.<identity>` | its own state | the router | the router |
|
||||
| a warrant, or an ask's end without one | `mesh.seat.operator-channel.event.decided.<asker>`, message id `<asker>.<id>` | EVENTS (7 days), deduplicated by the message id | the router only | the asker, its own name only, through its durable consumer |
|
||||
| show, edit or say on a channel | `mesh.seat.channel.accept.<show\|edit\|send>.<kind>` | the seat's work queue `SEAT_CHANNEL`, one worker per kind | the router | the holder of that kind only |
|
||||
| an answer chosen, a link asked | `mesh.seat.intake.event.<choice\|link>.<kind>` | EVENTS | the holder of that kind only | the router |
|
||||
| an answer chosen, a link asked, a message that failed, the channel's standing | `mesh.seat.intake.event.<choice\|link\|failed\|standing>.<kind>` | EVENTS | the holder of that kind only | the router |
|
||||
| a code typed (a link code; later a TOTP code) | `mesh.seat.intake.proof.code.<kind>`, core request and reply | nothing: never on a stream | the holder of that kind only | the router, which answers |
|
||||
|
||||
**The grants, composed by the controller as it composes every bus account:**
|
||||
@@ -184,6 +184,9 @@ state bucket, the EVENTS stream). `<asker>` is the asking module's name; `<kind>
|
||||
asks with its own kind; the modules that watch the seat answer.
|
||||
- **The seat declares all of it**: `kinded`, the verbs named `by-caller`, its `proofs`, and the holder's
|
||||
`records` its users read under their own name. Only `channel` and `intake` may be kinded.
|
||||
- **A claim of a kinded bench carries `kind` and `capabilities`** (`channel-capabilities/1`, ADR 0234 §2).
|
||||
The controller names every kind, its holder and its capabilities in the membership of each module that
|
||||
uses or watches the bench: that is where the router reads them, never from a channel.
|
||||
- **A record readable by its asker.** The router's `asks` bucket is read by an asker under its own prefix
|
||||
only: direct get on `$KV.<bucket>.<asker>.>`.
|
||||
- **No `answer` tool.** A tool runner may call any tool, so an answer that arrived as a tool call could
|
||||
|
||||
@@ -336,7 +336,8 @@ publisher, and the bus grants it to that publisher alone.
|
||||
| the operator's identities | the router's bucket `identities`, key `<kind>.<identity>` | its state | the router | the router |
|
||||
| a warrant, or an ask's end | `mesh.seat.operator-channel.event.decided.<asker>`, message id `<asker>.<id>` | EVENTS, deduplicated | the router | the asker, its own name |
|
||||
| show, edit, say | `mesh.seat.channel.accept.<show\|edit\|send>.<kind>` | the seat's work queue, one worker per kind | the router | that kind's holder |
|
||||
| a choice, a link asked | `mesh.seat.intake.event.<choice\|link>.<kind>` | EVENTS | that kind's holder | the router |
|
||||
| a choice, a link asked, a failed message, standing | `mesh.seat.intake.event.<choice\|link\|failed\|standing>.<kind>` | EVENTS | that kind's holder | the router |
|
||||
| which kinds exist, and what each promises | the router's membership (`seat-traffic.kinds`) | ASSIGNMENTS | the controller, from the claims | the router |
|
||||
| a code | `mesh.seat.intake.proof.code.<kind>` | nothing: core request and reply | that kind's holder | the router answers |
|
||||
|
||||
**An ask** carries an id the asker chose; the question in plain words; at most four options, each a label,
|
||||
|
||||
Reference in New Issue
Block a user