Refuse a port the function cannot take, and read a failing node as degraded

A python node's ports and settings arrive as keyword arguments, so a declared
name its `process` does not take was a TypeError on every call — and a node
that loads fine and fails every time it runs is the quiet kind of broken: the
hosted demo did it 720 times an hour for two days and the health badge read
ok throughout. `_build_node` now reads a written body with `ast` and refuses
the mismatch at load, so the node is an error on the canvas and an issue on
publish. Skipped for `**kwargs`, a decorated or absent `process`, and the
template a new node opens with. The SDK's generated shim always takes
`**settings`, so synced flows are untouched.

`/observability/summary` names a node that has failed in the last fifteen
minutes and reads degraded while it does, which is what would have made the
badge amber. `nodes.failing` carries the count.
This commit is contained in:
2026-09-02 22:37:44 +02:00
parent fe95e43ba1
commit 7dad47e8e2
5 changed files with 191 additions and 2 deletions
+3 -2
View File
@@ -35,8 +35,9 @@ API.
package, the other stands up a server. Everything after that is shared.
To look before installing, the hosted demo at
[fluksio.com](https://fluksio.com) runs a real instance with a small-house panel
and a training pipeline on it.
[fluksio.com](https://fluksio.com) runs a real instance: a small-house panel, a
media screen, and a lab where a training pipeline runs and its runs are
compared, four screens on one panel.
## Where things are