Phase 7f: universal page descriptor + render plan visibility

defpage is already portable: server executes via execute_page(),
client via try-client-route. Add render plan logging to client
routing so console shows boundary decisions on navigation:
"sx:route plan pagename — N server, M client"

Mark Phase 7 (Full Isomorphism) as complete:
- 7a: affinity annotations + render-target
- 7b: page render plans (boundary optimizer)
- 7e: cross-host isomorphic testing (61 tests)
- 7f: universal page descriptor + visibility

7c (optimistic updates) and 7d (offline data) remain as future work.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 00:10:45 +00:00
parent 32ca059ed7
commit 657b631700
3 changed files with 33 additions and 7 deletions

View File

@@ -661,7 +661,14 @@
(if (not (deps-satisfied? match))
(do (log-info (str "sx:route deps miss for " page-name)) false)
(let ((io-deps (get match "io-deps"))
(has-io (and io-deps (not (empty? io-deps)))))
(has-io (and io-deps (not (empty? io-deps))))
(render-plan (get match "render-plan")))
;; Log render plan for boundary visibility
(when render-plan
(let ((srv (or (get render-plan "server") (list)))
(cli (or (get render-plan "client") (list))))
(log-info (str "sx:route plan " page-name
" — " (len srv) " server, " (len cli) " client"))))
;; Ensure IO deps are registered as proxied primitives
(when has-io (register-io-deps io-deps))
(if (get match "stream")