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:
@@ -14,7 +14,7 @@
|
||||
// =========================================================================
|
||||
|
||||
var NIL = Object.freeze({ _nil: true, toString: function() { return "nil"; } });
|
||||
var SX_VERSION = "2026-03-07T23:59:03Z";
|
||||
var SX_VERSION = "2026-03-08T00:10:07Z";
|
||||
|
||||
function isNil(x) { return x === NIL || x === null || x === undefined; }
|
||||
function isSxTruthy(x) { return x !== false && !isNil(x); }
|
||||
@@ -2059,6 +2059,14 @@ return domAppendToHead(link); }, domQueryAll(container, "link[rel=\"stylesheet\"
|
||||
return (isSxTruthy(isNil(target)) ? (logWarn((String("sx:route target not found: ") + String(targetSel))), false) : (isSxTruthy(!isSxTruthy(depsSatisfied_p(match))) ? (logInfo((String("sx:route deps miss for ") + String(pageName))), false) : (function() {
|
||||
var ioDeps = get(match, "io-deps");
|
||||
var hasIo = (isSxTruthy(ioDeps) && !isSxTruthy(isEmpty(ioDeps)));
|
||||
var renderPlan = get(match, "render-plan");
|
||||
if (isSxTruthy(renderPlan)) {
|
||||
(function() {
|
||||
var srv = sxOr(get(renderPlan, "server"), []);
|
||||
var cli = sxOr(get(renderPlan, "client"), []);
|
||||
return logInfo((String("sx:route plan ") + String(pageName) + String(" — ") + String(len(srv)) + String(" server, ") + String(len(cli)) + String(" client")));
|
||||
})();
|
||||
}
|
||||
if (isSxTruthy(hasIo)) {
|
||||
registerIoDeps(ioDeps);
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user