Inbox — the human side of the decision
The tenant's recent
decision.*events, newest first: what needs a human. And the gesture that disposes of one: ack.
lm inbox # open decisions (ID, WHEN, PROCESS, MESSAGE, ENTITY_KEY)
lm inbox --limit 100 # 1..200, default 50
lm inbox --all # include disposed ones, marked [acked]
lm inbox --process litige-ouvert # one process's decisions (as PROCESS shows it)
lm inbox --type decision.litige-ouvert # one decision type
lm inbox ack 42 # dispose of decision 42
On the demo desk after day 3 (see Processes), two processes fired on the same order; a human disposes of one:
$ lm inbox
ID WHEN PROCESS MESSAGE ENTITY_KEY
25 2min grosse-commande Grosse commande SO-000014 : 5000.00 € pour P-1003 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
24 2min litige-ouvert Commande SO-000014 du client P-1003 en litige — 5000.00 € 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
$ lm inbox ack 25
acked.
$ lm inbox
ID WHEN PROCESS MESSAGE ENTITY_KEY
24 2min litige-ouvert Commande SO-000014 du client P-1003 en litige — 5000.00 € 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
$ lm inbox --all
ID WHEN PROCESS MESSAGE ENTITY_KEY
25 2min grosse-commande Grosse commande SO-000014 : 5000.00 € pour P-1003 [acked] 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
24 2min litige-ouvert Commande SO-000014 du client P-1003 en litige — 5000.00 € 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
18 3min litige-ouvert Commande SO-000013 du client P-1007 en litige — 860.00 € [acked] 96357a4a5750f97026f9ec5b8ce0f986517179f470e8a74b9fd013befe0e3622
| Column | Reads |
|---|---|
WHEN |
a humanized age: just now, 2min, 2h, yesterday, 3d |
PROCESS |
the process name, or workflow:<name> for a dormancy or due-date alert |
ENTITY_KEY |
a process decision: the row's content hash. A workflow alert: the document's business key (SO-000014) |
[acked] |
after the message: a disposed decision |
Narrow the list: lm inbox --limit 5 --process litige-ouvert gives that process's five newest
decisions. A workflow alert's process is workflow:<name>; --type decision.overdue.<name> keeps
one kind of alert.
Re-acking is harmless: it answers the same acked.. In the TUI, :inbox shows the same list
live — a acks, A toggles disposed entries. The inbox needs the lm_user role.
Who sees which decision
Each decision belongs to the scope of the kind: Process or
kind: Workflow that raised it, as the manifest stands now:
- a user with no
scope:*role sees the whole tenant's decisions; - a user holding
scope:<tag>roles sees, and can ack, only decisions in those scopes — an id from another scope answers404, like an id that does not exist (or another tenant's); - re-scope a manifest and its past decisions move with it; remove or rename it and they belong to
no scope, so only users with no
scope:*role still see them.
Above, litige-ouvert has since been removed (lm process rm). A user holding scope:desk
therefore sees only grosse-commande's decision, and a scope:stock user sees none:
$ lm inbox --all # as a scope:desk user
ID WHEN PROCESS MESSAGE ENTITY_KEY
25 2min grosse-commande Grosse commande SO-000014 : 5000.00 € pour P-1003 [acked] 3a47cea8e762663021d4c5bba36b5a410ad0731a1271e17706ce6976ee8c138b
$ lm inbox ack 24 # as a scope:stock user
Error: API error 404: no decision 24 in your inbox
Retention
Decisions age out with the event log (lumnik.events.retention-days, default 30). The inbox
is a work surface, not an archive.
Decision sources
decision.<process-name>— akind: Processreacting to a row landing (the end-to-end story: How lumnik breathes).decision.dormant.<workflow-name>— akind: Workflow's dormancy sweep: a non-terminal document observed unchanged past its declared threshold. See Dormancy for its wording.decision.overdue.<workflow-name>— a workflow's due date: a document still in a watched state after the date its data carries. See Due date.
The ack is itself an event (annotation.decision.acked), so a webhook can react to it.
See also
- Processes — where decisions come from.
- Workflows — declares what the values behind a decision mean.
- Admin API guide — Integration Hub — how a decision also reaches an external system.
- The WOW walkthrough — the whole ladder in one thread: see → react → decide, with declare underneath.