Phase 7b: page render plans — per-page boundary optimizer
Add page-render-plan to deps.sx: given page source + env + IO names, computes a dict mapping each needed component to "server" or "client", with server/client lists and IO dep collection. 5 new spec tests. Integration: - PageDef.render_plan field caches the plan at registration - compute_page_render_plans() called from auto_mount_pages() - Client page registry includes :render-plan per page - Affinity demo page shows per-page render plans Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -738,6 +738,15 @@ def _build_pages_sx(service: str) -> str:
|
||||
|
||||
stream = "true" if page_def.stream else "false"
|
||||
|
||||
# Render plan: which components render where
|
||||
plan = page_def.render_plan
|
||||
if plan:
|
||||
server_sx = "(" + " ".join(_sx_literal(n) for n in plan.get("server", [])) + ")"
|
||||
client_sx = "(" + " ".join(_sx_literal(n) for n in plan.get("client", [])) + ")"
|
||||
render_plan_sx = "{:server " + server_sx + " :client " + client_sx + "}"
|
||||
else:
|
||||
render_plan_sx = "{:server () :client ()}"
|
||||
|
||||
entry = (
|
||||
"{:name " + _sx_literal(page_def.name)
|
||||
+ " :path " + _sx_literal(page_def.path)
|
||||
@@ -746,6 +755,7 @@ def _build_pages_sx(service: str) -> str:
|
||||
+ " :stream " + stream
|
||||
+ " :layout " + _sx_literal(layout_id)
|
||||
+ " :io-deps " + io_deps_sx
|
||||
+ " :render-plan " + render_plan_sx
|
||||
+ " :content " + _sx_literal(content_src)
|
||||
+ " :deps " + deps_sx
|
||||
+ " :closure " + closure_sx + "}"
|
||||
|
||||
Reference in New Issue
Block a user