nenu-lang / listener-runnables
PartialListener Runnables
- Listener metadata currently owns only the event key.
- No Listener request or response contract is projected into runnable source.
- App Marché does not execute Listener nodes yet.
Current Metadata Boundary
A Listener node stores an event key only. Its source remains part of whole-project validation, but App Marché does not project a listener-specific request binding or Response contract.
| Listener metadata | Listener source |
|---|---|
| Event key | Identifies the intended trigger |
| Node identity | Keeps the runnable in project validation |
| No request or response fields | Receives no listener payload contract |
Pending Payload Contract
The redesign must define how an emitter declares payload fields, how those fields become typed Nenu bindings, and whether a listener can produce any response. Until then, do not publish a payload-dependent Listener workflow.
Listener Boundaries
- Treat the event key as the only stable Listener metadata today.
- Do not read
requestor returnResponseas a Listener contract. - Defer payload-dependent workflows until the listener contract is redesigned.
- Remember that App Marché does not execute Listener nodes yet.
- Keep browser UI behavior in Page Script; a listener has no page state, modal, toast, or navigation context.
Common Mistakes
| Wrong | Correct |
|---|---|
listener ExpenseCreated { ... } | Configure the event key in Listener metadata. |
Declare type Request | Wait for the Listener payload-contract redesign. |
Read request.expense_id | Do not assume a Listener request binding exists. |
| Return an invented Response | Do not assume a Listener response contract exists. |
Use toast.success | Use backend effects such as save, cache, log, or throw. |
