Add CEK/frames specs and spec explorer to Language nav

- Add frames.sx and cek.sx to the reactive spec registry with prose
- Add CEK Frames and CEK Machine under Specs → Reactive in nav
- Add Spec Explorer link under Language section

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 11:35:56 +00:00
parent 919998be1c
commit 7556cc303d

View File

@@ -133,7 +133,9 @@
{:label "Boot" :href "/sx/(language.(spec.boot))"}
{:label "Router" :href "/sx/(language.(spec.router))"})}
{:label "Reactive" :href "/sx/(language.(spec.reactive))" :children (list
{:label "Signals" :href "/sx/(language.(spec.signals))"})}
{:label "Signals" :href "/sx/(language.(spec.signals))"}
{:label "CEK Frames" :href "/sx/(language.(spec.frames))"}
{:label "CEK Machine" :href "/sx/(language.(spec.cek))"})}
{:label "Host Interface" :href "/sx/(language.(spec.host))" :children (list
{:label "Boundary" :href "/sx/(language.(spec.boundary))"}
{:label "Forms" :href "/sx/(language.(spec.forms))"}
@@ -315,7 +317,13 @@
(define reactive-spec-items (list
(dict :slug "signals" :filename "signals.sx" :title "Signals"
:desc "Fine-grained reactive primitives — signal, computed, effect, batch."
:prose "The signals module defines a fine-grained reactive system for client-side islands. Signals are containers for values that notify subscribers on change. Computed signals derive values lazily from other signals. Effects run side-effects when their dependencies change, with automatic cleanup. Batch coalesces multiple signal writes into a single notification pass. Island scope management ensures all signals, computeds, and effects are cleaned up when an island is removed from the DOM. The spec defines the reactive graph topology and update algorithm — each platform implements the actual signal/tracking types natively.")))
:prose "The signals module defines a fine-grained reactive system for client-side islands. Signals are containers for values that notify subscribers on change. Computed signals derive values lazily from other signals. Effects run side-effects when their dependencies change, with automatic cleanup. Batch coalesces multiple signal writes into a single notification pass. Island scope management ensures all signals, computeds, and effects are cleaned up when an island is removed from the DOM. The spec defines the reactive graph topology and update algorithm — each platform implements the actual signal/tracking types natively.")
(dict :slug "frames" :filename "frames.sx" :title "CEK Frames"
:desc "Continuation frame types for the explicit CEK machine."
:prose "Frames define what to do next when a sub-evaluation completes. Each frame type is a dict with a type key and frame-specific data. IfFrame, WhenFrame, BeginFrame handle control flow. LetFrame, DefineFrame, SetFrame handle bindings. ArgFrame tracks function call argument evaluation. MapFrame, FilterFrame, ReduceFrame, ForEachFrame drive higher-order forms element by element through the CEK machine. ReactiveResetFrame and DerefFrame enable deref-as-shift — the core reactive mechanism where deref inside a reactive boundary captures the continuation as a signal subscriber.")
(dict :slug "cek" :filename "cek.sx" :title "CEK Machine"
:desc "Explicit CEK machine evaluator — step function, run loop, reactive shift."
:prose "The CEK machine makes evaluation explicit. Every step is a pure function from state to state: Control (expression), Environment (bindings), Kontinuation (stack of frames). step-eval dispatches on expression type — literals pass through, symbols are looked up, lists dispatch on head (special forms, higher-order forms, macros, function calls). step-continue dispatches on the top frame type. Higher-order forms (map, filter, reduce, for-each, some, every?) step element by element, so deref-as-shift works inside callbacks. cek-call replaces invoke as the universal function dispatch — lambdas go through cek-run, native callables through apply.")))
(define host-spec-items (list
(dict :slug "boundary" :filename "boundary.sx" :title "Boundary"
@@ -400,6 +408,7 @@
:children (list
{:label "Docs" :href "/sx/(language.(doc))" :children docs-nav-items}
{:label "Specs" :href "/sx/(language.(spec))" :children specs-nav-items}
{:label "Spec Explorer" :href "/sx/(language.(spec.(explore.evaluator)))"}
{:label "Bootstrappers" :href "/sx/(language.(bootstrapper))" :children bootstrappers-nav-items}
{:label "Testing" :href "/sx/(language.(test))" :children testing-nav-items})}
{:label "Applications" :href "/sx/(applications)"