Claude and claude[bot]
4091d83af3
fix(editor): a render no longer restarts a failed runtime load ( #757 )
...
The lazy-runtime contract (#353 ) says a non-terminal failure waits for
the next explicit intent and that there are no background retries. But
_renderBody calls ensure() on every repaint while a surface waits for
the editor or onboarding runtime, and to the loader that call was
indistinguishable from an intent. Surfaces the core opens without the
runtime - the kiosk size dialog after a 3 s hold, the floor import
wizard on an empty plan, a dialog a warm remount revives - therefore
turned one failure into a loop: the loader's own state change, the
toast and its expiry, every hass tick repainted, started a new cycle
and showed a new toast every ~3.5 s. A wall tablet whose old hashed
chunks answer 404 after an integration update sat in that loop forever.
EditorRuntimeLoader.ensure takes an intent: the render calls it as
'reconcile'. A reconcile starts the first cycle a surface needs, but
after a non-terminal failure it returns false without loading until an
explicit ensure() - a tab, an opener, _requestMode, "Add space" - has
started a new cycle. Explicit calls, the terminal fingerprint failure,
ready and an in-flight cycle behave as before, for every loader
instance. The card's render lines stay line-neutral.
smoke_lazy_editor_chunk gains the three surfaces offline through their
real paths (a 3 s touch hold on a kiosk card, an empty plan pushed by
the server, General settings revived by a remount): one cycle, one
notice and an idle loader over 8 s, then the Plan tab and "Add space"
heal. On dev: 4 requests / 3 notices, 6 / 2 and 3 / 2. The loader unit
test pins reconcile versus intent; the mutant
render-reconcile-restarts-editor-runtime-cycle is guarded by the smoke.
Issue: #757
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-01 12:12:15 +00:00
..
2026-09-20 13:51:05 +03:00
2026-09-26 21:22:14 +03:00
2026-10-01 05:25:21 +00:00
2026-09-27 21:27:57 +03:00
2026-09-27 21:27:57 +03:00
2026-10-01 06:41:26 +00:00
2026-09-25 01:25:20 +00:00
2026-09-27 18:07:37 +00:00
2026-09-02 21:25:30 +03:00
2026-08-24 06:19:13 +03:00
2026-08-30 00:45:31 +03:00
2026-08-28 03:07:44 +03:00
2026-10-01 06:41:26 +00:00
2026-08-22 16:29:33 +03:00
2026-08-24 07:56:49 +03:00
2026-08-24 07:03:24 +03:00
2026-09-06 17:52:05 +00:00
2026-08-24 08:48:37 +03:00
2026-09-04 14:40:09 +03:00
2026-09-08 00:31:25 +03:00
2026-09-27 21:27:57 +03:00
2026-08-20 14:56:21 +03:00
2026-09-27 07:51:54 +00:00
2026-08-17 16:45:41 +03:00
2026-08-30 00:45:31 +03:00
2026-09-02 00:08:02 +03:00
2026-09-25 18:55:14 +03:00
2026-09-14 22:28:09 +03:00
2026-09-25 01:25:20 +00:00
2026-09-27 18:07:37 +00:00
2026-09-06 17:38:47 +03:00
2026-09-10 23:25:46 +03:00
2026-09-01 15:08:22 +00:00
2026-09-25 01:25:20 +00:00
2026-09-24 19:57:41 +03:00
2026-09-30 20:52:28 +03:00
2026-09-20 11:04:39 +03:00
2026-09-27 18:07:37 +00:00
2026-08-31 01:18:00 +03:00
2026-09-20 12:18:12 +03:00
2026-08-30 16:11:35 +00:00
2026-09-09 10:19:04 +03:00
2026-08-22 11:40:11 +03:00
2026-09-20 23:06:43 +03:00
2026-08-28 21:02:19 +03:00
2026-08-28 21:49:50 +03:00
2026-09-20 12:18:12 +03:00
2026-09-24 14:51:18 +03:00
2026-09-12 22:29:16 +03:00
2026-08-23 08:08:17 +03:00
2026-08-20 15:30:57 +03:00
2026-09-27 18:07:37 +00:00
2026-08-23 08:08:34 +03:00
2026-08-19 22:37:25 +03:00
2026-09-11 10:12:13 +03:00
2026-09-08 19:30:18 +03:00
2026-09-24 14:51:19 +03:00
2026-10-01 05:25:21 +00:00
2026-09-28 17:51:06 +03:00
2026-09-28 17:51:06 +03:00
2026-08-29 21:39:09 +03:00
2026-09-03 15:23:40 +03:00
2026-09-02 21:56:04 +00:00
2026-09-27 18:07:37 +00:00
2026-09-27 18:07:37 +00:00
2026-09-01 19:08:07 +03:00
2026-09-23 05:35:41 +03:00
2026-08-20 14:56:21 +03:00
2026-08-20 11:00:22 +03:00
2026-09-24 22:50:30 +03:00
2026-08-29 12:47:03 +03:00
2026-09-10 11:41:16 +00:00
2026-09-20 12:18:12 +03:00
2026-09-23 15:27:51 +03:00
2026-09-23 15:49:45 +00:00
2026-10-01 14:12:57 +03:00
2026-09-20 16:37:31 +03:00
2026-09-23 02:00:48 +03:00
2026-09-30 18:21:21 +00:00
2026-09-25 02:13:32 +03:00
2026-09-24 14:51:18 +03:00
2026-09-23 06:36:39 +00:00
2026-08-31 10:16:46 +03:00
2026-09-04 22:04:17 +03:00
2026-09-06 17:38:47 +03:00
2026-09-25 08:35:57 +00:00
2026-08-27 20:30:07 +03:00
2026-09-23 05:35:41 +03:00
2026-09-26 08:51:15 +00:00
2026-08-20 18:48:01 +00:00
2026-09-08 00:31:25 +03:00
2026-08-24 23:27:12 +03:00
2026-09-28 09:38:26 +03:00
2026-08-28 05:40:28 +00:00
2026-09-24 14:51:18 +03:00
2026-08-29 13:39:21 +03:00
2026-09-19 13:38:49 +03:00
2026-08-31 07:56:27 +03:00
2026-09-21 15:01:18 +03:00
2026-09-25 14:22:36 +03:00
2026-09-23 15:27:51 +03:00
2026-09-30 12:25:46 +03:00
2026-09-13 21:05:28 +03:00
2026-09-30 21:08:23 +00:00
2026-09-01 19:08:07 +03:00
2026-08-19 04:09:13 +03:00
2026-08-20 14:05:22 +03:00
2026-09-25 01:25:20 +00:00
2026-09-25 18:55:14 +03:00
2026-09-25 01:25:20 +00:00
2026-09-20 12:18:12 +03:00
2026-09-23 03:18:37 +03:00
2026-09-24 14:51:18 +03:00
2026-09-25 08:35:57 +00:00
2026-09-20 10:28:51 +03:00
2026-09-25 18:55:14 +03:00
2026-09-27 16:23:39 +00:00
2026-09-25 13:11:44 +00:00
2026-09-01 19:08:07 +03:00
2026-08-19 22:58:01 +03:00
2026-09-04 22:04:17 +03:00
2026-09-06 17:38:47 +03:00
2026-09-26 09:05:20 +03:00
2026-09-30 15:18:00 +03:00
2026-10-01 10:06:38 +00:00
2026-09-26 15:23:52 +03:00
2026-09-25 18:55:28 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 23:33:07 +03:00
2026-09-30 15:18:00 +03:00
2026-09-30 15:18:00 +03:00
2026-08-25 17:34:19 +03:00
2026-09-13 17:06:24 +03:00
2026-09-25 18:55:14 +03:00
2026-09-28 16:27:45 +03:00
2026-09-28 16:27:45 +03:00
2026-08-24 19:13:21 +03:00
2026-09-24 14:51:18 +03:00
2026-10-01 12:12:15 +00:00
2026-09-14 02:57:50 +03:00
2026-09-28 17:51:06 +03:00
2026-09-11 14:23:48 +03:00
2026-09-27 18:07:37 +00:00
2026-08-31 00:49:56 +03:00
2026-08-31 00:49:56 +03:00
2026-09-01 19:08:07 +03:00
2026-09-11 08:28:49 +03:00
2026-08-31 10:16:46 +03:00
2026-09-03 21:42:57 +00:00
2026-08-26 13:39:52 +03:00
2026-09-26 08:51:15 +00:00
2026-09-28 12:04:48 +03:00
2026-10-01 05:25:21 +00:00
2026-10-01 06:47:05 +00:00
2026-09-30 12:25:46 +03:00
2026-08-19 22:58:01 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-08-28 05:40:28 +00:00
2026-09-24 08:00:58 +00:00
2026-08-24 10:27:13 +03:00
2026-08-26 02:53:19 +03:00
2026-08-20 15:30:57 +03:00
2026-08-26 13:39:52 +03:00
2026-08-24 11:04:17 +03:00
2026-09-04 22:04:17 +03:00
2026-08-26 13:39:52 +03:00
2026-09-24 08:00:58 +00:00
2026-09-24 08:00:58 +00:00
2026-09-24 14:51:18 +03:00
2026-09-24 08:00:58 +00:00
2026-09-06 17:38:47 +03:00
2026-09-24 08:00:58 +00:00
2026-09-28 17:17:08 +03:00
2026-09-04 22:04:17 +03:00
2026-09-07 21:05:57 +03:00
2026-09-28 09:59:52 +03:00
2026-09-06 17:38:47 +03:00
2026-08-04 18:20:47 +03:00
2026-09-06 17:38:47 +03:00
2026-09-24 19:57:41 +03:00
2026-09-24 19:57:41 +03:00
2026-09-24 19:57:41 +03:00
2026-09-10 15:16:12 +03:00
2026-09-24 08:00:58 +00:00
2026-08-28 05:40:28 +00:00
2026-09-09 15:05:46 +03:00
2026-09-09 03:51:25 +03:00
2026-09-20 23:06:43 +03:00
2026-09-23 07:37:30 +03:00
2026-09-23 10:34:09 +03:00
2026-08-24 15:57:25 +03:00
2026-08-31 01:18:00 +03:00
2026-09-04 23:45:57 +03:00
2026-10-01 03:17:40 +00:00
2026-08-27 20:30:07 +03:00
2026-08-27 20:30:07 +03:00
2026-09-25 10:15:34 +03:00
2026-09-24 08:00:58 +00:00
2026-09-06 17:38:47 +03:00
2026-08-27 20:30:07 +03:00
2026-09-06 17:38:47 +03:00
2026-08-28 16:48:10 +03:00
2026-09-30 15:18:00 +03:00
2026-09-25 08:36:21 +03:00
2026-08-19 17:12:02 +03:00
2026-09-26 23:17:48 +03:00
2026-09-23 06:36:39 +00:00
2026-09-21 08:53:05 +03:00
2026-09-20 11:39:46 +03:00
2026-09-20 13:27:32 +03:00
2026-08-31 00:49:56 +03:00
2026-09-25 13:11:44 +00:00
2026-09-20 11:04:39 +03:00
2026-09-20 12:18:12 +03:00
2026-09-25 18:55:14 +03:00
2026-09-03 16:50:54 +03:00
2026-09-26 13:02:51 +03:00
2026-09-05 09:25:08 +03:00
2026-09-20 10:28:51 +03:00
2026-09-24 14:51:18 +03:00
2026-09-23 15:27:51 +03:00
2026-09-20 10:28:51 +03:00
2026-10-01 10:13:50 +00:00
2026-08-28 05:40:28 +00:00
2026-09-25 18:55:14 +03:00
2026-09-30 18:17:50 +00:00
2026-09-20 12:18:12 +03:00
2026-09-28 17:51:06 +03:00
2026-09-08 21:26:29 +03:00
2026-08-31 10:16:46 +03:00
2026-09-09 19:49:18 +00:00
2026-09-10 11:48:30 +03:00
2026-09-09 09:32:36 +03:00
2026-09-24 14:51:18 +03:00
2026-09-09 13:57:53 +03:00
2026-08-20 09:42:24 +03:00
2026-09-20 11:04:39 +03:00
2026-09-25 14:22:36 +03:00
2026-09-01 19:08:07 +03:00
2026-08-30 07:48:16 +00:00
2026-09-20 12:18:12 +03:00
2026-09-20 10:28:51 +03:00
2026-09-25 01:25:20 +00:00
2026-09-24 14:51:18 +03:00
2026-08-18 21:31:04 +03:00
2026-09-26 14:36:14 +03:00
2026-08-20 08:42:34 +03:00
2026-09-24 08:00:58 +00:00
2026-09-24 14:51:18 +03:00
2026-09-06 17:38:47 +03:00
2026-09-03 21:42:57 +00:00
2026-09-03 21:42:57 +00:00
2026-09-03 23:24:08 +03:00
2026-09-03 21:42:57 +00:00
2026-09-20 12:18:12 +03:00
2026-09-27 18:07:37 +00:00
2026-09-05 16:04:54 +03:00
2026-08-14 04:29:21 +03:00
2026-09-25 18:55:14 +03:00
2026-09-06 17:52:05 +00:00
2026-09-06 17:38:47 +03:00
2026-09-06 18:46:50 +03:00
2026-09-06 17:38:47 +03:00
2026-09-28 17:51:06 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-08-26 13:39:52 +03:00
2026-09-25 18:55:14 +03:00
2026-08-25 12:49:41 +03:00
2026-09-06 17:38:47 +03:00
2026-09-24 08:00:58 +00:00
2026-08-28 05:40:28 +00:00
2026-09-09 06:43:16 +03:00
2026-08-28 13:07:58 +00:00
2026-09-24 08:00:58 +00:00
2026-09-25 18:55:14 +03:00
2026-09-06 17:38:47 +03:00
2026-09-06 17:38:47 +03:00
2026-09-25 18:55:14 +03:00
2026-09-01 19:08:07 +03:00
2026-09-23 02:00:48 +03:00
2026-09-27 21:27:57 +03:00
2026-09-24 08:00:58 +00:00