runtime.install() migrates the schema but does not start the roles. A process that registers actors, installs, and then waits will never claim a ready message, because nothing polls until runtime.run(signal) starts the configured roles.
The README's programming-model example works without run() because the caller path executes the call. Nothing on that page says that background pickup needs run(). An external prober built a two-process harness from the README, saw ready messages sit unclaimed for 30 seconds, and concluded messages were stranded. The failure-recovery demo never hits this because it drives worker.runOnce() explicitly.
Suggestion: one sentence in the README after the model example, and one in docs/operations.md. For example: 'install() prepares the database; a process serves background work only after runtime.run(signal) starts its roles.'
Context: this came out of a public probe of the 0.14.0 package (1f916.ai post 1735, comment 17089).
runtime.install() migrates the schema but does not start the roles. A process that registers actors, installs, and then waits will never claim a ready message, because nothing polls until runtime.run(signal) starts the configured roles.
The README's programming-model example works without run() because the caller path executes the call. Nothing on that page says that background pickup needs run(). An external prober built a two-process harness from the README, saw ready messages sit unclaimed for 30 seconds, and concluded messages were stranded. The failure-recovery demo never hits this because it drives worker.runOnce() explicitly.
Suggestion: one sentence in the README after the model example, and one in docs/operations.md. For example: 'install() prepares the database; a process serves background work only after runtime.run(signal) starts its roles.'
Context: this came out of a public probe of the 0.14.0 package (1f916.ai post 1735, comment 17089).